Module java.desktop
Package java.awt.image

Class RescaleOp

java.lang.Object
java.awt.image.RescaleOp
所有已实现的接口:
BufferedImageOp, RasterOp

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

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

对于来自源对象的每个像素 {
    对于像素的每个波段/分量 {
        dstElement = (srcElement*scaleFactor) + offset
    }
}
 

对于光栅图像,重新缩放操作作用于波段。缩放常数集的数量可以是一个,此时相同的常数将应用于所有波段,或者必须等于源光栅波段的数量。

对于缓冲图像,重新缩放操作作用于颜色和alpha分量。缩放常数集的数量可以是一个,此时相同的常数将应用于所有颜色(但不包括alpha)分量。否则,缩放常数集的数量可以等于源颜色分量的数量,此时不会对alpha分量(如果存在)进行重新缩放。如果这两种情况都不适用,则缩放常数集的数量必须等于源颜色分量加上alpha分量的数量,此时所有颜色和alpha分量都将被重新缩放。

具有预乘alpha数据的缓冲图像在重新缩放方面与非预乘图像处理方式相同。也就是说,对于缓冲图像源的原始数据,将按波段进行重新缩放,而不考虑数据是否已预乘。如果需要颜色转换到目标ColorModel,则将考虑源和目标的预乘状态。

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

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

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

参见:
  • Constructor Details

    • RescaleOp

      public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints)
      构造具有所需比例因子和偏移量的新RescaleOp。比例因子和偏移量数组的长度必须符合上述类注释中的限制。RenderingHints参数可以为null。
      参数:
      scaleFactors - 指定的比例因子
      offsets - 指定的偏移量
      hints - 指定的RenderingHints,或null
    • RescaleOp

      public RescaleOp(float scaleFactor, float offset, RenderingHints hints)
      构造具有所需比例因子和偏移量的新RescaleOp。比例因子和偏移量将应用于源Raster中的所有波段以及BufferedImage中的所有颜色(但不包括alpha)分量。RenderingHints参数可以为null。
      参数:
      scaleFactor - 指定的比例因子
      offset - 指定的偏移量
      hints - 指定的RenderingHints,或null
  • Method Details

    • getScaleFactors

      public final float[] getScaleFactors(float[] scaleFactors)
      返回给定数组中的比例因子。为方便起见,也会返回数组。如果scaleFactors为null,则将分配一个新数组。
      参数:
      scaleFactors - 包含此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。如果源图像中的颜色模型与目标图像中的颜色模型不同,则像素将在目标中转换。如果目标图像为null,则将使用源ColorModel创建一个BufferedImage。如果此对象中的缩放因子/偏移量的数量不符合上述类注释中的限制,或者源图像具有IndexColorModel,则可能会抛出IllegalArgumentException。
      指定者:
      filter 在接口 BufferedImageOp
      参数:
      src - 要过滤的BufferedImage
      dst - 过滤操作的目标或null
      返回:
      过滤后的BufferedImage
      抛出:
      IllegalArgumentException - 如果srcColorModelIndexColorModel,或者此RescaleOp中的缩放因子和偏移量的数量不符合类注释中的要求,或者源图像和目标图像的大小不同。
    • filter

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

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

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

      public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM)
      创建具有正确大小和波段数量的零目标图像。
      指定者:
      createCompatibleDestImage 在接口 BufferedImageOp
      参数:
      src - 过滤操作的源图像。
      destCM - 目标的ColorModel。如果为null,则将使用源的ColorModel。
      返回:
      零目标图像。
    • createCompatibleDestRaster

      public WritableRaster createCompatibleDestRaster(Raster src)
      创建具有正确大小和波段数量的零目标Raster,给定此源。
      指定者:
      createCompatibleDestRaster 在接口 RasterOp
      参数:
      src - 源Raster
      返回:
      零目标Raster
    • getPoint2D

      public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
      返回源中给定点的目标点位置。如果dstPt非空,则将用它来保存返回值。由于这不是一个几何操作,srcPt将等于dstPt。
      指定者:
      getPoint2D 在接口 BufferedImageOp
      指定者:
      getPoint2D 在接口 RasterOp
      参数:
      srcPt - 源图像中的一个点
      dstPt - 目标点或null
      返回:
      目标点的位置。
    • getRenderingHints

      public final RenderingHints getRenderingHints()
      返回此操作的渲染提示。
      指定者:
      getRenderingHints 在接口 BufferedImageOp
      指定者:
      getRenderingHints 在接口 RasterOp
      返回:
      RescaleOp 的渲染提示。