Module  java.desktop
软件包  java.awt.image

Class ConvolveOp

  • All Implemented Interfaces:
    BufferedImageOpRasterOp


    public class ConvolveOp
    extends Object
    implements BufferedImageOp, RasterOp
    该类实现从源到目的地的卷积。 使用卷积核的卷积是通过将内核与输入像素的环绕相乘来计算来自输入像素的输出像素的空间操作。 这允许输出像素以可以用内核数学指定的方式受直接邻域的影响。

    该类使用BufferedImage数据操作,其中颜色分量与alpha分量预乘。 如果Source BufferedImage有一个alpha组件,并且颜色组件不会与alpha组件预乘,那么在进行卷积之前,数据将被预乘。 如果目的地具有未预乘的颜色分量,则在存储到目的地之前,将α分割(如果alpha为0,则颜色分量设置为0)。 如果目的地没有阿尔法分量,则在首先将其从颜色分量中分离出来后,生成的α被丢弃。

    光栅被视为没有alpha通道。 如果不需要对BufferedImages中的Alpha通道进行上述处理,则可以通过获取源BufferedImage的栅格并使用与Raster一起使用的此类的过滤器方法来避免此类处理。

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

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

    另请参见:
    KernelRenderingHints.KEY_COLOR_RENDERINGRenderingHints.KEY_DITHERING
    • 字段详细信息

      • 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对象
        另请参见:
        KernelEDGE_NO_OPEDGE_ZERO_FILLRenderingHints
      • ConvolveOp

        public ConvolveOp​(Kernel kernel)
        构造一个给定内核的ConvolveOp。 边缘条件将为EDGE_ZERO_FILL。
        参数
        kernel - 指定的 Kernel
        另请参见:
        KernelEDGE_ZERO_FILL
    • 方法详细信息

      • getEdgeCondition

        public int getEdgeCondition​()
        返回边缘条件。
        结果
        这个边缘条件这个 ConvolveOp
        另请参见:
        EDGE_NO_OPEDGE_ZERO_FILL
      • getKernel

        public final Kernel getKernel​()
        返回内核。
        结果
        KernelConvolveOp
      • 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 - 如果 srcnull
        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 - 如果 srcnull
        ImagingOpException - 如果 srcdst没有相同数量的频带
        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对应于源图像中的指定点。