java.lang.Object java.awt.image.RescaleOp
public class RescaleOp
通过将每个像素的样本值乘以一个缩放因子,然后加上一个偏移量,此类对源图像中数据进行逐像素重缩放。缩放后的样本值被限制在目标图像中的最小/最大可表示形式。
重缩放操作的伪代码如下:
for each pixel from Source object { for each band/component of the pixel { dstElement = (srcElement*scaleFactor) + offset } }
对于 Raster,重缩放在 band 上运行。缩放常量集合的数量可能为 1,在这种情况下,对所有 band 都应用相同的常量,或者该数量必须等于 Source Raster band 的数量。
对于 BufferedImage,重缩放在颜色和 alpha 分量上进行。缩放常量集合的数量可能为 1,在这种情况下,对所有颜色(但不包括 alpha)分量应用相同的常量。否则,缩放常量集合的数量必须等于 Source 颜色分量,在这种情况下,不对 alpha 分量(如果存在)执行重缩放。如果这两种情况都不适用,则缩放常量集合的数量必须等于 Source 颜色分量加上 alpha 分量的数量,在这种情况下,要对所有颜色和 alpha 分量都执行重缩放。
无论所 band 数据是否自左乘 alpha,对于 BufferedImage 源执行重缩放的方式都是相同的。也就是说,无论数据是否自左乘 alpha,在 BufferedImage 源的原始数据的每个 band 上都执行重缩放。如果需要将颜色转换到目标 ColorModel,则该步骤要考虑源和目标的自左乘状态。
不能重缩放具有 IndexColorModel 的图像。
如果在构造方法中定义了 RenderingHints 对象,当需要颜色转换时,可以使用颜色呈现提示和抖动提示。
注意,允许进行 in-place 操作(也就是说,源和目标可以是相同的对象)。
构造方法摘要 | |
---|---|
RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints) 构造一个具有所希望的缩放因子和偏移量的新 RescaleOp。 |
|
RescaleOp(float scaleFactor, float offset, RenderingHints hints) 构造一个具有所希望的缩放因子和偏移量的新 RescaleOp。 |
方法摘要 | |
---|---|
BufferedImage |
createCompatibleDestImage(BufferedImage src, ColorModel destCM) 创建一个具有正确大小和 band 数的经检查的目标图像。 |
WritableRaster |
createCompatibleDestRaster(Raster src) 在给出源的情况下,创建一个具有正确大小和 band 数的经检查的目标 Raster 。 |
BufferedImage |
filter(BufferedImage src, BufferedImage dst) 对源 BufferedImage 进行重缩放。 |
WritableRaster |
filter(Raster src, WritableRaster dst) 对源 Raster 中的像素数据进行重缩放。 |
Rectangle2D |
getBounds2D(BufferedImage src) 返回重缩放后的目标图像的边界框。 |
Rectangle2D |
getBounds2D(Raster src) 返回重缩放后的目标 Raster 的边界框。 |
int |
getNumFactors() 返回此 RescaleOp 中使用的缩放因子和偏移量的数量。 |
float[] |
getOffsets(float[] offsets) 返回给定数组中的偏移量。 |
Point2D |
getPoint2D(Point2D srcPt, Point2D dstPt) 给定源中的一个点,返回对应目标点的位置。 |
RenderingHints |
getRenderingHints() 返回此操作的呈现提示。 |
float[] |
getScaleFactors(float[] scaleFactors) 返回给定数组中的缩放因子。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public RescaleOp(float[] scaleFactors, float[] offsets, RenderingHints hints)
scaleFactors
- 指定的缩放因子
offsets
- 指定的偏移量
hints
- 指定的
RenderingHints
或
null
public RescaleOp(float scaleFactor, float offset, RenderingHints hints)
scaleFactor
- 指定的缩放因子
offset
- 指定的偏移量
hints
- 指定的
RenderingHints
或
null
方法详细信息 |
---|
public final float[] getScaleFactors(float[] scaleFactors)
scaleFactors
- 包含此
RescaleOp
的缩放因子的数组
RescaleOp
的缩放因子。
public final float[] getOffsets(float[] offsets)
offsets
- 包含此
RescaleOp
的偏移量的数组
RescaleOp
的偏移量。
public final int getNumFactors()
RescaleOp
的缩放因子和偏移量的数量。
public final BufferedImage filter(BufferedImage src, BufferedImage dst)
BufferedImageOp
中的
filter
src
- 要过滤的
BufferedImage
dst
- 过滤操作的目标或
null
BufferedImage
。
IllegalArgumentException
- 如果
src
的
ColorModel
是一个
IndexColorModel
,或者此
RescaleOp
中缩放因子和偏移量的数量不符合上述类注释中规定的限制。
public final WritableRaster filter(Raster src, WritableRaster dst)
src
- 要过滤的
Raster
dst
- 过滤操作的目标或
null
WritableRaster
。
IllegalArgumentException
- 如果
src
和
dst
没有相同的 band 数,或者此
RescaleOp
中缩放因子和偏移量的数量不符合上述类注释中规定的限制。
public final Rectangle2D getBounds2D(BufferedImage src)
BufferedImageOp
中的
getBounds2D
src
- 要过滤的
BufferedImage
Rectangle2D
。
public final Rectangle2D getBounds2D(Raster src)
RasterOp
中的
getBounds2D
src
- 重缩放后的目标
Raster
Raster
的边界。
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM)
BufferedImageOp
中的
createCompatibleDestImage
src
- 过滤操作的源图像。
destCM
- 目标的 ColorModel。如果为 null,则使用源的 ColorModel。
public WritableRaster createCompatibleDestRaster(Raster src)
Raster
。
RasterOp
中的
createCompatibleDestRaster
src
- 源
Raster
Raster
。
public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
BufferedImageOp
中的
getPoint2D
RasterOp
中的
getPoint2D
srcPt
- 源图像中的一个点
dstPt
- 目标点或
null
public final RenderingHints getRenderingHints()
BufferedImageOp
中的
getRenderingHints
RasterOp
中的
getRenderingHints
RescaleOp
的呈现提示。