- java.lang.Object
-
- java.awt.image.ConvolveOp
-
- All Implemented Interfaces:
-
BufferedImageOp,RasterOp
public class ConvolveOp extends Object implements BufferedImageOp, RasterOp
该类实现从源到目的地的卷积。 使用卷积核的卷积是通过将内核与输入像素的环绕相乘来计算来自输入像素的输出像素的空间操作。 这允许输出像素以可以用内核数学指定的方式受直接邻域的影响。该类使用BufferedImage数据操作,其中颜色分量与alpha分量预乘。 如果Source BufferedImage有一个alpha组件,并且颜色组件不会与alpha组件预乘,那么在进行卷积之前,数据将被预乘。 如果目的地具有未预乘的颜色分量,则在存储到目的地之前,将α分割(如果alpha为0,则颜色分量设置为0)。 如果目的地没有阿尔法分量,则在首先将其从颜色分量中分离出来后,生成的α被丢弃。
光栅被视为没有alpha通道。 如果不需要对BufferedImages中的Alpha通道进行上述处理,则可以通过获取源BufferedImage的栅格并使用与Raster一起使用的此类的过滤器方法来避免此类处理。
如果在构造函数中指定了RenderingHints对象,则在需要颜色转换时,可以使用颜色渲染提示和抖动提示。
请注意,源和目标可能不是相同的对象。
-
-
Field Summary
Fields Modifier and Type Field 描述 static intEDGE_NO_OP源图像边缘的像素被复制到目的地的相应像素,而不进行修改。static intEDGE_ZERO_FILL目标图像边缘的像素设置为零。
-
构造方法摘要
构造方法 Constructor 描述 ConvolveOp(Kernel kernel)构造一个给定内核的ConvolveOp。ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)构造一个给定内核,边缘条件和RenderingHints对象(可能为null)的ConvolveOp。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 BufferedImagecreateCompatibleDestImage(BufferedImage src, ColorModel destCM)创建具有正确大小和频带数的归零目标图像。WritableRastercreateCompatibleDestRaster(Raster src)给出这个来源,创建一个具有正确大小和频带数的归零目标光栅。BufferedImagefilter(BufferedImage src, BufferedImage dst)对BufferedImages执行卷积。WritableRasterfilter(Raster src, WritableRaster dst)对光栅进行卷积。Rectangle2DgetBounds2D(BufferedImage src)返回已过滤的目标图像的边界框。Rectangle2DgetBounds2D(Raster src)返回已筛选的目标栅格的边框。intgetEdgeCondition()返回边缘条件。KernelgetKernel()返回内核。Point2DgetPoint2D(Point2D srcPt, Point2D dstPt)返回源中给定点的目标点的位置。RenderingHintsgetRenderingHints()返回此操作的渲染提示。
-
-
-
字段详细信息
-
EDGE_ZERO_FILL
@Native public static final int EDGE_ZERO_FILL
目标图像边缘的像素设置为零。 这是默认值。- 另请参见:
- Constant Field Values
-
EDGE_NO_OP
@Native public static final int EDGE_NO_OP
源图像边缘的像素被复制到目的地的相应像素,而不进行修改。- 另请参见:
- Constant Field Values
-
-
构造方法详细信息
-
ConvolveOp
public ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)
构造一个给定内核,边缘条件和RenderingHints对象(可能为null)的ConvolveOp。- 参数
-
kernel- 指定的Kernel -
edgeCondition- 指定的边缘条件 -
hints- 指定的RenderingHints对象 - 另请参见:
-
Kernel,EDGE_NO_OP,EDGE_ZERO_FILL,RenderingHints
-
ConvolveOp
public ConvolveOp(Kernel kernel)
构造一个给定内核的ConvolveOp。 边缘条件将为EDGE_ZERO_FILL。- 参数
-
kernel- 指定的Kernel - 另请参见:
-
Kernel,EDGE_ZERO_FILL
-
-
方法详细信息
-
getEdgeCondition
public int getEdgeCondition()
返回边缘条件。- 结果
-
这个边缘条件这个
ConvolveOp。 - 另请参见:
-
EDGE_NO_OP,EDGE_ZERO_FILL
-
getKernel
public final Kernel getKernel()
返回内核。- 结果
-
这
Kernel的ConvolveOp。
-
filter
public final BufferedImage filter(BufferedImage src, BufferedImage dst)
对BufferedImages执行卷积。 源图像的每个分量将被卷积(包括alpha分量,如果存在)。 如果源图像中的颜色模型与目标图像中的颜色模型不同,则将在目标中转换像素。 如果目标图像为空,则将使用源ColorModel创建一个BufferedImage。 如果源与目的地相同,则可能会抛出IllegalArgumentException。- Specified by:
-
filter在接口BufferedImageOp - 参数
-
src- 来源BufferedImage过滤 -
dst- 目的地BufferedImage为过滤的src - 结果
-
过滤后的
BufferedImage - 异常
-
NullPointerException- 如果src是null -
IllegalArgumentException- 如果src等于dst -
ImagingOpException- 如果不能过滤src
-
filter
public final WritableRaster filter(Raster src, WritableRaster dst)
对光栅进行卷积。 源光栅的每个波段将被卷积。 源和目的地必须具有相同数量的频带。 如果目标Raster为null,将创建一个新的栅格。 如果源与目的地相同,则可能会抛出IllegalArgumentException。- Specified by:
-
filter在接口RasterOp - 参数
-
src- 来源Raster进行过滤 -
dst- 目的地WritableRaster为过滤的src - 结果
-
过滤后的
WritableRaster - 异常
-
NullPointerException- 如果src是null -
ImagingOpException- 如果src和dst没有相同数量的频带 -
ImagingOpException- 如果不能过滤src -
IllegalArgumentException- 如果src等于dst
-
createCompatibleDestImage
public BufferedImage createCompatibleDestImage(BufferedImage src, ColorModel destCM)
创建具有正确大小和频带数的归零目标图像。 如果destCM为null,则将使用适当的ColorModel。- Specified by:
-
createCompatibleDestImage在接口BufferedImageOp - 参数
-
src- 过滤器操作的源图像。 -
destCM- 目的地的ColorModel。 可以为null。 - 结果
-
具有正确大小和频带数目的目的地
BufferedImage。
-
createCompatibleDestRaster
public WritableRaster createCompatibleDestRaster(Raster src)
给出这个来源,创建一个具有正确大小和频带数的归零目标光栅。- Specified by:
-
createCompatibleDestRaster在接口RasterOp - 参数
-
src- 来源Raster - 结果
-
一个
WritableRaster,与src兼容
-
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 - 结果
-
一个
Rectangle2D是由过滤操作产生的Raster的边框。
-
getPoint2D
public final Point2D getPoint2D(Point2D srcPt, Point2D dstPt)
返回源中给定点的目标点的位置。 如果dstPt不为空,它将用于保存返回值。 由于这不是几何操作,srcPt将等于dstPt。- Specified by:
-
getPoint2D在接口BufferedImageOp - Specified by:
-
getPoint2D在接口RasterOp - 参数
-
srcPt- 表示源图像中的点的Point2D -
dstPt- 存储结果的Point2D - 结果
-
目标图像中的
Point2D对应于源图像中的指定点。
-
getRenderingHints
public final RenderingHints getRenderingHints()
返回此操作的渲染提示。- Specified by:
-
getRenderingHints在接口BufferedImageOp - Specified by:
-
getRenderingHints在接口RasterOp - 结果
-
该
RenderingHints对象为这BufferedImageOp。 如果没有设置提示,则返回null。
-
-