Module java.desktop
Package java.awt.image

Class ConvolveOp

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

public class ConvolveOp extends Object implements BufferedImageOp, RasterOp
该类实现了从源到目标的卷积。使用卷积核进行卷积是一种空间操作,通过将卷积核与输入像素的周围相乘来计算输出像素。这使得输出像素受到周围像素的影响,这种影响可以用卷积核在数学上指定的方式来描述。

该类使用颜色分量与alpha分量预乘的BufferedImage数据。如果源BufferedImage具有alpha分量,并且颜色分量未与alpha分量预乘,则在进行卷积之前会进行预乘。如果目标具有未预乘的颜色分量,则在存储到目标之前会除去alpha(如果alpha为0,则颜色分量设置为0)。如果目标没有alpha分量,则首先除去颜色分量,然后丢弃生成的alpha。

光栅被视为没有alpha通道。如果不希望对BufferedImage中的alpha通道进行上述处理,则可以通过获取源BufferedImage的光栅并使用此类的filter方法来避免,该方法适用于光栅。

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

请注意,源和目标可能不是同一个对象。

参见:
  • Field Details

    • EDGE_ZERO_FILL

      @Native public static final int EDGE_ZERO_FILL
      目标图像边缘的像素将被设置为零。这是默认设置。
      参见:
    • EDGE_NO_OP

      @Native public static final int EDGE_NO_OP
      源图像边缘的像素将被复制到目标中相应的像素,而不进行修改。
      参见:
  • Constructor Details

    • ConvolveOp

      public ConvolveOp(Kernel kernel, int edgeCondition, RenderingHints hints)
      给定一个卷积核、一个边缘条件和一个RenderingHints对象(可以为null)构造一个ConvolveOp。
      参数:
      kernel - 指定的Kernel
      edgeCondition - 指定的边缘条件
      hints - 指定的RenderingHints对象
      参见:
    • ConvolveOp

      public ConvolveOp(Kernel kernel)
      给定一个卷积核构造一个ConvolveOp。边缘条件将为EDGE_ZERO_FILL。
      参数:
      kernel - 指定的Kernel
      参见:
  • Method Details

    • getEdgeCondition

      public int getEdgeCondition()
      返回边缘条件。
      返回:
      ConvolveOp的边缘条件。
      参见:
    • getKernel

      public final Kernel getKernel()
      返回卷积核。
      返回:
      ConvolveOpKernel
    • filter

      public final BufferedImage filter(BufferedImage src, BufferedImage dst)
      在BufferedImages上执行卷积。源图像的每个分量都将被卷积(包括alpha分量,如果存在)。如果源图像中的颜色模型与目标图像中的颜色模型不同,则目标中的像素将被转换。如果目标图像为null,则将使用源ColorModel创建一个BufferedImage。如果源与目标相同,可能会抛出IllegalArgumentException。
      指定者:
      filter 在接口 BufferedImageOp
      参数:
      src - 要过滤的源BufferedImage
      dst - 过滤后的src的目标BufferedImage
      返回:
      过滤后的BufferedImage
      抛出:
      NullPointerException - 如果srcnull
      IllegalArgumentException - 如果src等于dst
      ImagingOpException - 如果无法过滤src
    • filter

      public final WritableRaster filter(Raster src, WritableRaster dst)
      在Rasters上执行卷积。源光栅的每个波段都将被卷积。源和目标必须具有相同数量的波段。如果目标光栅为null,则将创建一个新的光栅。如果源与目标相同,可能会抛出IllegalArgumentException。
      指定者:
      filter 在接口 RasterOp
      参数:
      src - 要过滤的源Raster
      dst - 过滤后的src的目标WritableRaster
      返回:
      过滤后的WritableRaster
      抛出:
      NullPointerException - 如果srcnull
      ImagingOpException - 如果srcdst的波段数不同
      ImagingOpException - 如果无法过滤src
      IllegalArgumentException - 如果src等于dst
    • createCompatibleDestImage

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

      public WritableRaster createCompatibleDestRaster(Raster src)
      给定此源,创建一个正确大小和波段数的零目标光栅。
      指定者:
      createCompatibleDestRaster 在接口 RasterOp
      参数:
      src - 源Raster
      返回:
      src兼容的WritableRaster
    • getBounds2D

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

      public final Rectangle2D getBounds2D(Raster src)
      返回过滤后目标光栅的边界框。由于这不是几何操作,边界框不会改变。
      指定者:
      getBounds2D 在接口 RasterOp
      参数:
      src - 源Raster
      返回值:
      一个Rectangle2D,表示滤波操作结果的Raster的边界框。
    • getPoint2D

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

      public final RenderingHints getRenderingHints()
      返回此操作的渲染提示。
      指定者:
      getRenderingHints 在接口 BufferedImageOp
      指定者:
      getRenderingHints 在接口 RasterOp
      返回值:
      BufferedImageOpRenderingHints对象。如果未设置任何提示,则返回null。