模块  java.desktop
软件包  java.awt.image

Class RescaleOp

  • 实现的所有接口
    BufferedImageOpRasterOp

    public class RescaleOp
    extends Object
    implements BufferedImageOp, RasterOp
    此类通过将每个像素的样本值乘以比例因子然后添加偏移量,对源图像中的数据执行逐像素重新缩放。 缩放的样本值被剪切为目标图像中可表示的最小值/最大值。

    重新缩放操作的伪代码如下:

      for each pixel from Source object {
        for each band/component of the pixel {
            dstElement = (srcElement*scaleFactor) + offset
        }
    } 

    对于Rasters,重新缩放对频段进行操作。 缩放常数组的数量可以是1,在这种情况下,相同的常数应用于所有频带,或者它必须等于源栅格频带的数量。

    对于BufferedImages,重新缩放对颜色和alpha分量进行操作。 缩放常数组的数量可以是1,在这种情况下,相同的常数应用于所有颜色(但不是α)组件。 否则,缩放常数组的数量可以等于源颜色分量的数量,在这种情况下,不执行α分量(如果存在)的重新缩放。 如果这些情况都不适用,则缩放常量集的数量必须等于源颜色分量加上alpha分量的数量,在这种情况下,所有颜色和alpha分量都会重新缩放。

    具有预乘alpha数据的BufferedImage源以与非预乘图像相同的方式处理以进行重新缩放。 也就是说,在BufferedImage源的原始数据上按带执行重新缩放,而不考虑数据是否被预乘。 如果目标ColorModel需要进行颜色转换,则此步骤将考虑源和目标的预乘状态。

    带有IndexColorModel的图像无法重新缩放。

    如果在构造函数中指定了RenderingHints对象,则在需要颜色转换时可以使用颜色呈现提示和抖动提示。

    请注意,允许就地操作(即源和目标可以是同一个对象)。

    另请参见:
    RenderingHints.KEY_COLOR_RENDERINGRenderingHints.KEY_DITHERING
    • 构造方法详细信息

      • RescaleOp

        public RescaleOp​(float[] scaleFactors,
                         float[] offsets,
                         RenderingHints hints)
        构造具有所需比例因子和偏移的新RescaleOp。 scaleFactor和offset数组的长度必须满足上面类注释中规定的限制。 RenderingHints参数可以为null。
        参数
        scaleFactors - 指定的比例因子
        offsets - 指定的偏移量
        hints - 指定的 RenderingHintsnull
      • RescaleOp

        public RescaleOp​(float scaleFactor,
                         float offset,
                         RenderingHints hints)
        构造一个具有所需比例因子和偏移量的新RescaleOp。 scaleFactor和offset将应用于源Raster中的所有band以及BufferedImage中的所有颜色(但不是alpha)组件。 RenderingHints参数可以为null。
        参数
        scaleFactor - 指定的比例因子
        offset - 指定的偏移量
        hints - 指定的 RenderingHintsnull
    • 方法详细信息

      • getScaleFactors

        public final float[] getScaleFactors​(float[] scaleFactors)
        返回给定数组中的比例因子。 为方便起见,还返回了数组。 如果scaleFactors为null,则将分配一个新数组。
        参数
        scaleFactors - 包含此 RescaleOp的比例因子的 RescaleOp
        结果
        这个 RescaleOp的比例因子。
      • getOffsets

        public final float[] getOffsets​(float[] offsets)
        返回给定数组中的偏移量。 为方便起见,还返回了数组。 如果偏移量为null,则将分配新数组。
        参数
        offsets - 包含此 RescaleOp的偏移量的 RescaleOp
        结果
        这个 RescaleOp的补偿。
      • getNumFactors

        public final int getNumFactors()
        返回此RescaleOp中使用的缩放因子和偏移的数量。
        结果
        RescaleOp的缩放因子和偏移量的 RescaleOp
      • filter

        public final BufferedImage filter​(BufferedImage src,
                                          BufferedImage dst)
        重新调整源BufferedImage。 如果源图像中的颜色模型与目标图像中的颜色模型不同,则将在目标中转换像素。 如果目标图像为null,则将使用源ColorModel创建BufferedImage。 如果此对象中的缩放因子/偏移的数量不满足上面的类注释中所述的限制,或者源图像具有IndexColorModel,则可能抛出IllegalArgumentException。
        Specified by:
        filter在接口 BufferedImageOp
        参数
        src - 要过滤的 BufferedImage
        dst - 过滤操作的目标或 null
        结果
        过滤后的 BufferedImage
        异常
        IllegalArgumentException - 如果 ColorModelsrcIndexColorModel ,或者此 RescaleOp的缩放因子和偏移量不符合类注释中所述的要求,或者源和目标映像的大小不同。
      • filter

        public final WritableRaster filter​(Raster src,
                                           WritableRaster dst)
        重新调整源Raster中的像素数据。 如果目标Raster为null,则将创建一个新的Raster。 源和目标必须具有相同数量的波段。 否则,抛出IllegalArgumentException。 请注意,此对象中缩放因子/偏移的数量必须满足上述类注释中规定的限制。 否则,抛出IllegalArgumentException。
        Specified by:
        filter在接口 RasterOp
        参数
        src - 要过滤的 Raster
        dst - 过滤操作的目标或 null
        结果
        过滤后的 WritableRaster
        异常
        IllegalArgumentException - 如果 srcdst没有相同数量的频段,或者此 RescaleOp的缩放因子和偏移数不符合类注释中所述的要求,或者源和目标栅格的大小不同。
      • getBounds2D

        public final Rectangle2D getBounds2D​(BufferedImage src)
        返回重新缩放的目标图像的边界框。 由于这不是几何操作,因此边界框不会改变。
        Specified by:
        getBounds2D在接口 BufferedImageOp
        参数
        src - 要过滤的 BufferedImage
        结果
        Rectangle2D表示目标图像的边界框。
      • getBounds2D

        public final Rectangle2D getBounds2D​(Raster src)
        返回重新缩放的目标Raster的边界框。 由于这不是几何操作,因此边界框不会改变。
        Specified by:
        getBounds2D在接口 RasterOp
        参数
        src - 重新缩放的目的地 Raster
        结果
        指定的边界 Raster
      • createCompatibleDestImage

        public BufferedImage createCompatibleDestImage​(BufferedImage src,
                                                       ColorModel destCM)
        创建具有正确大小和波段数的归零目标图像。
        Specified by:
        createCompatibleDestImage在接口 BufferedImageOp
        参数
        src - 过滤器操作的源图像。
        destCM - 目的地的ColorModel。 如果为null,则将使用源的ColorModel。
        结果
        归零目标图像。
      • createCompatibleDestRaster

        public WritableRaster createCompatibleDestRaster​(Raster src)
        给定此源,创建具有正确大小和波段数的归零目标 Raster
        Specified by:
        createCompatibleDestRaster在接口 RasterOp
        参数
        src - 源 Raster
        结果
        归零目的地 Raster
      • getPoint2D

        public final Point2D getPoint2D​(Point2D srcPt,
                                        Point2D dstPt)
        返回给定源中某个点的目标点的位置。 如果dstPt为非null,则它将用于保存返回值。 由于这不是几何操作,因此srcPt将等于dstPt。
        Specified by:
        getPoint2D在接口 BufferedImageOp
        Specified by:
        getPoint2D在接口 RasterOp
        参数
        srcPt - 源图像中的一个点
        dstPt - 目的地点或 null
        结果
        目的地点的位置。