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

Class ColorConvertOp

  • All Implemented Interfaces:
    BufferedImageOpRasterOp


    public class ColorConvertOp
    extends Object
    implements BufferedImageOp, RasterOp
    该类对源图像中的数据执行逐像素颜色转换。 所得到的颜色值被缩放到目标图像的精度。 可以通过ColorSpace对象或ICC_Profile对象数组来指定颜色转换。

    如果源是具有预乘α的BufferedImage,则颜色分量在颜色转换之前被alpha分量除。 如果目的地是具有预乘法α的BufferedImage,则颜色分量在转换后乘以alpha分量。 光栅被视为没有alpha通道,即所有的带都是彩色带。

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

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

    另请参见:
    RenderingHints.KEY_COLOR_RENDERINGRenderingHints.KEY_DITHERING
    • 构造方法详细信息

      • ColorConvertOp

        public ColorConvertOp​(RenderingHints hints)
        构造一个新的ColorConvertOp,它将从源颜色空间转换为目标色彩空间。 RenderingHints参数可能为null。 此Op仅可用于BufferedImages,并将直接从源图像的ColorSpace转换为目标的。 filter方法的destination参数不能指定为null。
        参数
        hints - 用于控制颜色转换的 RenderingHints对象,或 null
      • ColorConvertOp

        public ColorConvertOp​(ColorSpace cspace,
                              RenderingHints hints)
        从ColorSpace对象构造一个新的ColorConvertOp。 RenderingHints参数可能为null。 此Op仅可与BufferedImages一起使用,并且在以目标参数为null调用filter方法时主要有用。 在这种情况下,ColorSpace定义了由过滤方法创建的目的地的目标颜色空间。 否则,ColorSpace在转换为目的地空间之前定义了一个中间空间,源将被转换。
        参数
        cspace - 定义目的地 ColorSpace或中间件 ColorSpace
        hints - 用于控制颜色转换的 RenderingHints对象,或 null
        异常
        NullPointerException - 如果cspace为空
      • ColorConvertOp

        public ColorConvertOp​(ColorSpace srcCspace,
                              ColorSpace dstCspace,
                              RenderingHints hints)
        从两个ColorSpace对象构造一个新的ColorConvertOp。 RenderingHints参数可能为null。 此Op主要用于在Raster上调用过滤器方法,在这种情况下,两个ColorSpaces定义要在光栅上执行的操作。 在这种情况下,源光栅中的条带数必须与srcCspace中的组件数量相匹配,目标光栅中的条带数必须与dstCspace中的组件数量相匹配。 对于BufferedImages,两个ColorSpaces定义了在转换为目标空间之前转换源的中间空间。
        参数
        srcCspace - 来源 ColorSpace
        dstCspace - 目的地 ColorSpace
        hints - 用于控制颜色转换的 RenderingHints对象,或 null
        异常
        NullPointerException - 如果srcCspace或dstCspace为空
      • ColorConvertOp

        public ColorConvertOp​(ICC_Profile[] profiles,
                              RenderingHints hints)
        从ICC_Profiles数组构造一个新的ColorConvertOp。 RenderingHints参数可能为null。 配置文件的序列可能包括表示颜色空间的配置文件,表示效果的配置文件等。如果整个序列不表示明确定义的颜色转换,则抛出异常。

        对于BufferedImages,如果源BufferedImage的ColorSpace与阵列中第一个配置文件的要求不匹配,则首次转换为适当的ColorSpace。 如果阵列中最后一个配置文件的要求不被目标BufferedImage的ColorSpace满足,则最后一次转换是到目标的ColorSpace。

        对于光栅,源光栅中的光带数必须与阵列中第一个配置文件的要求相匹配,目标光栅中的光带数必须与阵列中最后一个配置文件的要求相匹配。 数组必须至少有两个元素,或者为Raster调用过滤器方法将抛出一个IllegalArgumentException异常。

        参数
        profiles - ICC_Profile对象的数组
        hints - 用于控制颜色转换的 RenderingHints对象,或 null
        异常
        IllegalArgumentException - 当轮廓序列未指定明确定义的颜色转换时
        NullPointerException - 如果个人资料为空
    • 方法详细信息

      • getICC_Profiles

        public final ICC_Profile[] getICC_Profiles​()
        返回用于构造此ColorConvertOp的ICC_Profiles数组。 如果ColorConvertOp未由此类阵列构造,则返回null。
        结果
        这个 ColorConvertOpICC_Profile对象的数组,或者 null如果这个 ColorConvertOp没有用 ICC_Profile对象的数组构造的 ICC_Profile
      • filter

        public final BufferedImage filter​(BufferedImage src,
                                          BufferedImage dest)
        ColorConverts源BufferedImage。 如果目标图像为空,则使用适当的ColorModel创建一个BufferedImage。
        Specified by:
        filter在接口 BufferedImageOp
        参数
        src - 要转换的来源 BufferedImage
        dest - 目的地 BufferedImagenull
        结果
        dest颜色转换为 src或新转换 BufferedImage如果 destnull
        异常
        IllegalArgumentException - 如果dest为空,并且该op是使用仅使用RenderingHints参数的构造函数构造的,因为操作不正确。
      • filter

        public final WritableRaster filter​(Raster src,
                                           WritableRaster dest)
        Color转换源光栅中的图像数据。 如果目标Raster为null,将创建一个新的栅格。 源和目标光栅中的频带数必须满足上述要求。 用于创建此ColorConvertOp的构造函数必须提供足够的信息来定义源和目标颜色空间。 往上看。 否则抛出异常。
        Specified by:
        filter在接口 RasterOp
        参数
        src - 要转换的来源 Raster
        dest - 目的地 WritableRasternull
        结果
        dest颜色转换从 src或一个新的,转换 WritableRaster如果 destnull
        异常
        IllegalArgumentException - 如果源或目标频带的数量不正确,则源或目标色彩空间未定义,或者该op是使用仅适用于BufferedImages操作的构造函数构造的。
      • getBounds2D

        public final Rectangle2D getBounds2D​(BufferedImage src)
        给出这个源,返回目的地的边界框。 请注意,这将与源的边框相同。
        Specified by:
        getBounds2D在接口 BufferedImageOp
        参数
        src - 来源 BufferedImage
        结果
        一个 Rectangle2D是目的地的边界盒,给定了指定的 src
      • getBounds2D

        public final Rectangle2D getBounds2D​(Raster src)
        给出这个源,返回目的地的边界框。 请注意,这将与源的边框相同。
        Specified by:
        getBounds2D在接口 RasterOp
        参数
        src - 来源 Raster
        结果
        一个 Rectangle2D是目的地的边界框,给定了指定的 src
      • createCompatibleDestImage

        public BufferedImage createCompatibleDestImage​(BufferedImage src,
                                                       ColorModel destCM)
        给出这个来源,创建具有正确大小和频带数的归零目标图像。
        Specified by:
        createCompatibleDestImage在接口 BufferedImageOp
        参数
        src - 过滤器操作的源图像。
        destCM - 目的地的ColorModel。 如果为null,将使用适当的ColorModel。
        结果
        一个 BufferedImage具有正确的大小和数量的频带,从指定的 src
        异常
        IllegalArgumentException - 如果 destCMnull而这个 ColorConvertOp是创建的,没有为目标定义任何 ICC_ProfileColorSpace
      • createCompatibleDestRaster

        public WritableRaster createCompatibleDestRaster​(Raster src)
        给出这个来源,创建一个具有正确大小和频带数的归零目标光栅。
        Specified by:
        createCompatibleDestRaster在接口 RasterOp
        参数
        src - 指定的 Raster
        结果
        一个 WritableRaster具有正确的大小和数量的频带,从指定的 src
        异常
        IllegalArgumentException - 如果这个 ColorConvertOp没有足够的信息创建来定义 dstsrc颜色空间
      • getPoint2D

        public final Point2D getPoint2D​(Point2D srcPt,
                                        Point2D dstPt)
        返回源中给定点的目标点的位置。 如果dstPt是非空值,它将用于保存返回值。 请注意,对于此类,目标点将与源点相同。
        Specified by:
        getPoint2D在接口 BufferedImageOp
        Specified by:
        getPoint2D在接口 RasterOp
        参数
        srcPt - 指定的来源 Point2D
        dstPt - 目的地 Point2D
        结果
        dstPt将其位置设置为与 srcPt相同