Module  java.desktop
软件包  java.awt.image

Class RescaleOp

  • All Implemented Interfaces:
    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
        }
    } 

    对于光栅,重新缩放操作在频带上。 缩放常数集合的数量可以是一个,在这种情况下,相同的常量应用于所有频带,或者它必须等于源光栅频带的数量。

    对于BufferedImages,重定向在颜色和alpha组件上运行。 缩放常数集合的数量可以是一个,在这种情况下,相同的常量应用于所有颜色(但不是alpha)组件。 否则,缩放常量集合的数量可以等于源颜色分量的数量,在这种情况下,不执行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将应用于源栅格中的所有条带以及BufferedImage中的所有颜色(但不是alpha)组件。 RenderingHints参数可能为null。
        参数
        scaleFactor - 指定的比例因子
        offset - 指定的偏移量
        hints - 指定的 RenderingHintsnull
    • 方法详细信息

      • getScaleFactors

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

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

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

        public final BufferedImage filter​(BufferedImage src,
                                          BufferedImage dst)
        重新调整源BufferedImage。 如果源图像中的颜色模型与目标图像中的颜色模型不同,则将在目标中转换像素。 如果目标图像为空,则将使用源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为null,将创建一个新的栅格。 源和目的地必须具有相同数量的频带。 否则,将抛出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)
        返回重新缩放的目标栅格的边框。 由于这不是一个几何操作,边框不会改变。
        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不为空,它将用于保存返回值。 由于这不是几何操作,srcPt将等于dstPt。
        Specified by:
        getPoint2D在接口 BufferedImageOp
        Specified by:
        getPoint2D在接口 RasterOp
        参数
        srcPt - 源图像中的一个点
        dstPt - 目的地点或 null
        结果
        目的地点的位置。