- java.lang.Object
-
- java.awt.image.RescaleOp
-
- All Implemented Interfaces:
-
BufferedImageOp
,RasterOp
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对象,则在需要颜色转换时,可以使用颜色渲染提示和抖动提示。
请注意,就地操作是允许的(即源和目标可以是同一个对象)。
-
-
构造方法摘要
构造方法 Constructor 描述 RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints)
构建一个具有所需比例因子和偏移量的新RescaleOp。RescaleOp(float scaleFactor, float offset, RenderingHints hints)
构造一个具有所需比例因子和偏移量的新RescaleOp。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 BufferedImage
createCompatibleDestImage(BufferedImage src, ColorModel destCM)
创建具有正确大小和频带数的归零目标图像。WritableRaster
createCompatibleDestRaster(Raster src)
创建一个归零目的地Raster
具有正确的大小和频带数,给定此源。BufferedImage
filter(BufferedImage src, BufferedImage dst)
重新调整源BufferedImage。WritableRaster
filter(Raster src, WritableRaster dst)
重新调整源光栅中的像素数据。Rectangle2D
getBounds2D(BufferedImage src)
返回重新缩放的目标图像的边框。Rectangle2D
getBounds2D(Raster src)
返回重新缩放的目标栅格的边框。int
getNumFactors()
返回此RescaleOp中使用的缩放因子和偏移量的数量。float[]
getOffsets(float[] offsets)
返回给定数组中的偏移量。Point2D
getPoint2D(Point2D srcPt, Point2D dstPt)
返回源中给定点的目标点的位置。RenderingHints
getRenderingHints()
返回此操作的渲染提示。float[]
getScaleFactors(float[] scaleFactors)
返回给定数组中的比例因子。
-
-
-
构造方法详细信息
-
RescaleOp
public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints)
构建一个具有所需比例因子和偏移量的新RescaleOp。 scaleFactor和offset数组的长度必须满足上面类注释中所述的限制。 RenderingHints参数可能为null。- 参数
-
scaleFactors
- 指定的比例因子 -
offsets
- 指定的偏移量 -
hints
- 指定的RenderingHints
或null
-
RescaleOp
public RescaleOp(float scaleFactor, float offset, RenderingHints hints)
构造一个具有所需比例因子和偏移量的新RescaleOp。 scaleFactor和offset将应用于源栅格中的所有条带以及BufferedImage中的所有颜色(但不是alpha)组件。 RenderingHints参数可能为null。- 参数
-
scaleFactor
- 指定的比例因子 -
offset
- 指定的偏移量 -
hints
- 指定的RenderingHints
或null
-
-
方法详细信息
-
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
-如果ColorModel
的src
是IndexColorModel
,或者如果缩放因子和偏移在此数RescaleOp
不符合上述类注释中规定的要求。
-
filter
public final WritableRaster filter(Raster src, WritableRaster dst)
重新调整源光栅中的像素数据。 如果目标Raster为null,将创建一个新的栅格。 源和目的地必须具有相同数量的频带。 否则,将抛出IllegalArgumentException。 请注意,此对象中缩放因子/偏移量的数量必须满足上述类注释中所述的限制。 否则,将抛出IllegalArgumentException。- Specified by:
-
filter
在接口RasterOp
- 参数
-
src
- 要过滤的Raster
-
dst
- 过滤操作的目的地或null
- 结果
-
过滤后的
WritableRaster
。 - 异常
-
IllegalArgumentException
- 如果src
和dst
不具有相同的频带数,或者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
- 结果
- 目的地点的位置。
-
getRenderingHints
public final RenderingHints getRenderingHints()
返回此操作的渲染提示。- Specified by:
-
getRenderingHints
在接口BufferedImageOp
- Specified by:
-
getRenderingHints
在接口RasterOp
- 结果
-
这个
RescaleOp
的渲染提示。
-
-