模块  java.desktop
软件包  java.awt.image

Class DirectColorModel

  • 实现的所有接口
    Transparency

    public class DirectColorModel
    extends PackedColorModel
    DirectColorModel类是一个ColorModel类,它使用像素值表示RGB颜色和alpha信息作为单独的样本,并将单个像素的所有样本打包成单个int,short或byte数量。 此类只能用于ColorSpace.TYPE_RGB类型的ColorSpaces。 此外,对于ColorSpace的每个组件,通过ColorSpace的getMinValue()方法获得的最小标准化组件值必须为0.0,并且通过getMaxValue()方法获得的最大值必须为1.0(这些最小/最大值是RGB空间的典型值) 。 像素值中必须有三个颜色样本,并且可以有一个alpha样本。 对于那些使用类型为transferType的基本数组像素表示的transferType ,数组长度始终为1。 支持的传输类型是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT和DataBuffer.TYPE_INT。 颜色和alpha样本以位掩码指示的位存储在数组的单个元素中。 每个位掩码必须是连续的,并且掩码不能重叠。 相同的掩码适用于其他方法使用的单个int像素表示。 掩模和颜色/ alpha样本的对应关系如下:
    • 如果没有alpha,则通过从0到2的索引来识别掩码,或者如果存在alpha,则为3。
    • 前三个指数是指颜色样本; index 0对应红色,索引1对应绿色,索引2对应蓝色。
    • 索引3对应于α样本(如果存在)。

    从像素值到颜色/ alpha分量的转换用于显示或处理目的是样本与组件的一一对应。 DirectColorModel通常与图像数据一起使用,该图像数据使用掩码来定义打包样本。 例如, DirectColorModel可以与SinglePixelPackedSampleModel一起使用以构建BufferedImage 通常, SampleModelColorModel使用的掩模是相同的。 但是,如果它们不同,则将根据ColorModel的掩模完成像素数据的颜色解释。

    单个int像素表示对此类的所有对象都有效,因为始终可以在单个int中表示与此类一起使用的像素值。 因此,由于像素值无效,使用此表示的方法不会抛出IllegalArgumentException

    此颜色模型类似于X11 TrueColor视觉效果。 getRGBdefault方法指定的默认RGB ColorModel是DirectColorModel具有以下参数:

      Number of bits:        32
     Red mask:              0x00ff0000
     Green mask:            0x0000ff00
     Blue mask:             0x000000ff
     Alpha mask:            0xff000000
     Color space:           sRGB
     isAlphaPremultiplied:  False
     Transparency:          Transparency.TRANSLUCENT
     transferType:          DataBuffer.TYPE_INT 

    本课程中的许多方法都是最终的。 这是因为底层本机图形代码对此类的布局和操作做出了假设,这些假设反映在此处标记为final的方法的实现中。 您可以出于其他原因对此类进行子类化,但不能覆盖或修改这些方法的行为。

    另请参见:
    ColorModelColorSpaceSinglePixelPackedSampleModelBufferedImageColorModel.getRGBdefault()
    • 构造方法详细信息

      • DirectColorModel

        public DirectColorModel​(int bits,
                                int rmask,
                                int gmask,
                                int bmask)
        根据指定的掩码构造一个DirectColorModel ,指示int像素表示中的哪些位包含红色,绿色和蓝色样本。 由于像素值不包含alpha信息,因此所有像素都被视为不透明,这意味着alpha = 1.0。 每个掩码中的所有位必须是连续的并且适合于int像素表示的指定数量的最低有效位。 ColorSpace是默认的sRGB空间。 透明度值为Transparency.OPAQUE。 传输类型是可以容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的。
        参数
        bits - 像素值中的位数; 例如,掩码中的位数之和。
        rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
        gmask - 指定一个掩码,指示整数像素中的哪些位包含绿色分量
        bmask - 指定一个掩码,指示整数像素中的哪些位包含蓝色分量
      • DirectColorModel

        public DirectColorModel​(int bits,
                                int rmask,
                                int gmask,
                                int bmask,
                                int amask)
        根据指定的掩码构造一个DirectColorModel ,指示int像素表示中的哪些位包含红色,绿色和蓝色样本以及alpha样本(如果存在)。 如果amask为0,则像素值不包含alpha信息,并且所有像素都被视为不透明,这意味着alpha = 1.0。 每个掩码中的所有位必须是连续的并且适合于int像素表示的指定数量的最低有效位。 Alpha(如果存在)不是预乘的。 ColorSpace是默认的sRGB空间。 如果不存在alpha,则透明度值为Transparency.OPAQUE,否则为Transparency.TRANSLUCENT。 传输类型是可以容纳单个像素的DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT中最小的。
        参数
        bits - 像素值中的位数; 例如,掩码中的位数之和。
        rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
        gmask - 指定一个掩码,指示整数像素中的哪些位包含绿色分量
        bmask - 指定一个掩码,指示整数像素中的哪些位包含蓝色分量
        amask - 指定一个掩码,指示整数像素中的哪些位包含alpha分量
      • DirectColorModel

        public DirectColorModel​(ColorSpace space,
                                int bits,
                                int rmask,
                                int gmask,
                                int bmask,
                                int amask,
                                boolean isAlphaPremultiplied,
                                int transferType)
        根据指定的参数构造一个DirectColorModel 颜色组件在指定的ColorSpace ,其颜色必须为ColorSpace.TYPE_RGB,并且具有最小的标准化组件值,这些值均为0.0,最大值均为1.0。 掩码指定int像素表示中的哪些位包含红色,绿色和蓝色样本以及alpha样本(如果存在)。 如果amask为0,则像素值不包含alpha信息,并且所有像素都被视为不透明,这意味着alpha = 1.0。 每个掩码中的所有位必须是连续的并且适合于int像素表示的指定数量的最低有效位。 如果存在alpha,则boolean isAlphaPremultiplied指定如何解释像素值中的颜色和alpha样本。 如果booleantrue ,则假定颜色样本已乘以alpha样本。 如果不存在alpha,则透明度值为Transparency.OPAQUE,否则为Transparency.TRANSLUCENT。 传输类型是用于表示像素值的基本数组类型,必须是DataBuffer.TYPE_BYTE,DataBuffer.TYPE_USHORT或DataBuffer.TYPE_INT之一。
        参数
        space - 指定的 ColorSpace
        bits - 像素值中的位数; 例如,掩码中的位数之和。
        rmask - 指定一个掩码,指示整数像素中的哪些位包含红色分量
        gmask - 指定一个掩码,指示整数像素中的哪些位包含绿色分量
        bmask - 指定一个掩码,指示整数像素中的哪些位包含蓝色分量
        amask - 指定一个掩码,指示整数像素中的哪些位包含alpha分量
        isAlphaPremultiplied - true如果颜色样本被alpha样本预乘; 否则为false
        transferType - 用于表示像素值的数组类型
        异常
        IllegalArgumentException - 如果 space不是TYPE_RGB空间或者最小/最大标准化组件值不是0.0 / 1.0。
    • 方法详细信息

      • getRedMask

        public final int getRedMask()
        返回指示 int像素表示中哪些位包含红色分量的掩码。
        结果
        掩码,指示 int像素表示的哪些位包含红色样本。
      • getGreenMask

        public final int getGreenMask()
        返回指示 int像素表示中哪些位包含绿色分量的掩码。
        结果
        掩码,指示 int像素表示的哪些位包含绿色样本。
      • getBlueMask

        public final int getBlueMask()
        返回指示 int像素表示中哪些位包含蓝色分量的掩码。
        结果
        掩码,指示 int像素表示的哪些位包含蓝色样本。
      • getAlphaMask

        public final int getAlphaMask()
        返回指示 int像素表示中哪些位包含alpha分量的掩码。
        结果
        掩码,指示 int像素表示的哪些位包含alpha样本。
      • getRed

        public final int getRed​(int pixel)
        返回指定像素的红色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值指定为int 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 例如,如果alpha值为0,则红色值为0。
        Specified by:
        getRed在课程 ColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的红色分量,在sRGB ColorSpace为0到255。
      • getGreen

        public final int getGreen​(int pixel)
        返回指定像素的绿色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值指定为int 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 例如,如果alpha值为0,则绿色值为0。
        Specified by:
        getGreenColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的绿色分量,sRGB ColorSpace中的0到255。
      • getBlue

        public final int getBlue​(int pixel)
        返回指定像素的蓝色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值指定为int 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 例如,如果alpha值为0,则蓝色值为0。
        Specified by:
        getBlue在课程 ColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的蓝色分量,sRGB ColorSpace中的0到255。
      • getAlpha

        public final int getAlpha​(int pixel)
        返回指定像素的alpha分量,从0到255缩放。像素值指定为 int
        Specified by:
        getAlpha在类 ColorModel
        参数
        pixel - 指定的像素
        结果
        pixel的alpha分量的值,从0到255。
      • getRGB

        public final int getRGB​(int pixel)
        以默认RGB颜色模型格式返回像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值指定为int 返回的值采用非预乘格式。 因此,如果alpha被预乘,则该方法将其从颜色分量中分离出来。 例如,如果alpha值为0,则颜色值均为0。
        重写:
        getRGB在类 ColorModel
        参数
        pixel - 指定的像素
        结果
        指定像素的颜色/ alpha分量的RGB值。
        另请参见:
        ColorModel.getRGBdefault()
      • getRed

        public int getRed​(Object inData)
        返回指定像素的红色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 如果α值是0,例如,红色值是0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType抛出异常。 如果transferType不支持UnsupportedOperationException则抛出ColorModel
        重写:
        getRed在类 ColorModel
        参数
        inData - 包含像素值的数组
        结果
        指定像素的红色分量的值。
        异常
        ArrayIndexOutOfBoundsException - 如果 inData不足以容纳此颜色模型的像素值
        ClassCastException - 如果 inData不是类型 transferType的基本数组
        UnsupportedOperationException - 如果此颜色模型不支持此 transferType
      • getGreen

        public int getGreen​(Object inData)
        返回指定像素的绿色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 如果α值是0,例如,绿色的值为0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType抛出异常。 如果transferType不支持UnsupportedOperationException则抛出ColorModel
        重写:
        getGreen在类 ColorModel
        参数
        inData - 包含像素值的数组
        结果
        指定像素的绿色分量的值。
        异常
        ArrayIndexOutOfBoundsException - 如果 inData不足以容纳此颜色模型的像素值
        ClassCastException - 如果 inData不是 transferType类型的基本数组
        UnsupportedOperationException - 如果此颜色模型不支持此 transferType
      • getBlue

        public int getBlue​(Object inData)
        返回指定像素的蓝色分量,在默认RGB ColorSpace (sRGB)中从0到255缩放。 必要时进行颜色转换。 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 返回值是非预乘值。 因此,如果alpha被预乘,则此方法在返回值之前将其分开。 如果α值是0,例如,蓝色值为0。如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType抛出异常。 如果transferType不支持UnsupportedOperationException则抛出ColorModel
        重写:
        getBlue在课程 ColorModel
        参数
        inData - 包含像素值的数组
        结果
        指定像素的蓝色分量的值。
        异常
        ArrayIndexOutOfBoundsException - 如果 inData不足以容纳此颜色模型的像素值
        ClassCastException -如果 inData不是类型的基本数组 transferType
        UnsupportedOperationException - 如果此颜色模型不支持此 transferType
      • getAlpha

        public int getAlpha​(Object inData)
        返回指定像素的alpha分量,从0到255缩放。像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType ,则会抛出异常。 如果这个transferType不支持,一个UnsupportedOperationException异常。
        重写:
        getAlphaColorModel
        参数
        inData - 指定的像素
        结果
        指定像素的alpha分量,从0到255缩放。
        异常
        ClassCastException - 如果 inData不是类型 transferType的原始数组
        ArrayIndexOutOfBoundsException - 如果 inData不足以容纳此 ColorModel的像素值
        UnsupportedOperationException - 如果此 tranferType不支持此 ColorModel
      • getRGB

        public int getRGB​(Object inData)
        以默认RGB颜色模型格式返回指定像素的颜色/ alpha分量。 必要时进行颜色转换。 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 如果inData不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出inData不够大,不能保存这个像素值ColorModel 返回的值采用非预乘格式。 因此,如果alpha被预乘,则该方法将其从颜色分量中分离出来。 例如,如果alpha值为0,则颜色值为0.由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType ,则会抛出异常。
        重写:
        getRGB在类 ColorModel
        参数
        inData - 指定的像素
        结果
        指定像素的颜色和alpha分量。
        异常
        UnsupportedOperationException - 如果这个 transferType不支持 ColorModel
        另请参见:
        ColorModel.getRGBdefault()
      • getDataElements

        public Object getDataElements​(int rgb,
                                      Object pixel)
        在给定默认RGB颜色模型中的整数像素表示的情况下,返回此ColorModel像素的数据元素数组表示形式。 然后可以将此数组传递给WritableRaster对象的setDataElements方法。 如果像素变量为null ,则分配新数组。 如果pixel不是null ,则它必须是类型为transferType的基本数组; 否则,抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel 返回像素阵列。 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType抛出异常。
        重写:
        getDataElements在类 ColorModel
        参数
        rgb - 默认RGB颜色模型中的整数像素表示
        pixel - 指定的像素
        结果
        ColorModel指定像素的数组表示 ColorModel
        异常
        ClassCastException - 如果 pixel不是类型 transferType的原始数组
        ArrayIndexOutOfBoundsException - 如果 pixel不足以容纳此 ColorModel的像素值
        UnsupportedOperationException - 如果这个 transferType不支持 ColorModel
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • getComponents

        public final int[] getComponents​(int pixel,
                                         int[] components,
                                         int offset)
        返回此ColorModel给定像素的非标准化颜色/ alpha分量ColorModel 像素值指定为int 如果components阵列是null ,则分配新阵列。 返回components数组。 颜色/ alpha分量存储中components数组以offset ,即使阵列通过这种方法分配的。 一个ArrayIndexOutOfBoundsException如果抛出components数组不null ,是不是大到足以容纳所有的颜色和alpha分量,开始offset
        重写:
        getComponents在类 ColorModel
        参数
        pixel - 指定的像素
        components - 用于接收指定像素的颜色和alpha分量的数组
        offset - components数组的偏移量,开始存储颜色和alpha分量
        结果
        一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
      • getComponents

        public final int[] getComponents​(Object pixel,
                                         int[] components,
                                         int offset)
        返回此ColorModel给定像素的非标准化颜色/ alpha分量ColorModel 像素值由作为对象引用传入的类型为transferType的数据元素数组指定。 如果pixel不是类型的基本数组transferType ,一个ClassCastException被抛出。 一个ArrayIndexOutOfBoundsException如果抛出pixel不够大,不能保存这个像素值ColorModel 如果components阵列是null ,则分配新阵列。 返回components数组。 颜色/ alpha分量存储中components数组以offset ,即使阵列通过这种方法分配的。 一个ArrayIndexOutOfBoundsException如果抛出components数组不null ,是不是大到足以容纳所有的颜色和alpha分量,开始offset 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType抛出异常。
        重写:
        getComponents在课程 ColorModel
        参数
        pixel - 指定的像素
        components - 用于接收指定像素的颜色和alpha分量的数组
        offset - 进入 components数组的偏移量,开始存储颜色和alpha分量
        结果
        一个数组,包含从指定偏移量开始的指定像素的颜色和alpha分量。
        异常
        ClassCastException - 如果 pixel不是类型 transferType的基本数组
        ArrayIndexOutOfBoundsException - 如果 pixel不足以容纳此 ColorModel的像素值,或者如果 components不是 null并且不足以容纳所有颜色和alpha分量, offset开始
        UnsupportedOperationException - 如果此颜色模型不支持此 transferType
      • createCompatibleWritableRaster

        public final WritableRaster createCompatibleWritableRaster​(int w,
                                                                   int h)
        创建具有指定宽度和高度的 WritableRaster ,其数据布局( SampleModel )与此 ColorModel兼容。
        重写:
        createCompatibleWritableRaster在类 ColorModel
        参数
        w - 要应用于新 WritableRaster的宽度
        h - 要应用于新 WritableRaster的高度
        结果
        具有指定宽度和高度的 WritableRaster对象。
        异常
        IllegalArgumentException - 如果 wh小于或等于零
        另请参见:
        WritableRasterSampleModel
      • getDataElement

        public int getDataElement​(int[] components,
                                  int offset)
        在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel表示为int的像素值。 一个ArrayIndexOutOfBoundsException如果抛出components阵列是不是大到足以容纳所有的颜色和alpha分量,开始offset
        重写:
        getDataElement在课程 ColorModel
        参数
        components - 非标准化颜色和alpha分量的数组
        offset -索引为 components ,从此处开始检索颜色和alpha分量
        结果
        ColorModel对应于指定组件的 int像素值。
        异常
        ArrayIndexOutOfBoundsException - 如果 components数组不足以容纳从 offset开始的所有颜色和alpha分量
      • getDataElements

        public Object getDataElements​(int[] components,
                                      int offset,
                                      Object obj)
        在给定一组非标准化颜色/ alpha分量的情况下,返回此ColorModel像素的数据元素数组表示。 然后可以将此数组传递给WritableRaster对象的setDataElements方法。 一个ArrayIndexOutOfBoundsException如果被抛出components阵列是没有大到足以容纳所有的颜色和alpha分量,起始偏移量。 如果obj变量为null ,则分配新阵列。 如果obj不是null ,则它必须是类型为transferType的基本数组; 否则,抛出ClassCastException 一个ArrayIndexOutOfBoundsException如果抛出obj不够大,不能保存这个像素值ColorModel 由于DirectColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType ,则会抛出异常。
        重写:
        getDataElementsColorModel
        参数
        components - 非标准化颜色和alpha分量的数组
        offset -索引为 components在开始检索颜色和alpha分量
        obj - 表示颜色和alpha分量数组的 Object
        结果
        Object表示颜色和alpha分量的数组。
        异常
        ClassCastException - 如果 obj不是类型 transferType的原始数组
        ArrayIndexOutOfBoundsException - 如果 obj不足以容纳此 ColorModel的像素值,或者 components数组不足以容纳从 offset开始的所有颜色和alpha分量
        UnsupportedOperationException - 如果此颜色模型不支持此 transferType
        另请参见:
        WritableRaster.setDataElements(int, int, java.lang.Object)SampleModel.setDataElements(int, int, java.lang.Object, java.awt.image.DataBuffer)
      • coerceData

        public final ColorModel coerceData​(WritableRaster raster,
                                           boolean isAlphaPremultiplied)
        强制栅格数据与isAlphaPremultiplied变量中指定的状态匹配,假设此数据当前由ColorModel正确描述。 它可以将颜色栅格数据乘以或除以alpha,或者如果数据处于正确状态则不执行任何操作。 如果需要强制数据,此方法还将返回此ColorModel的实例,并isAlphaPremultiplied设置isAlphaPremultiplied标志。 如果此UnsupportedOperationException不支持此transferType,则此方法将抛出ColorModel 由于ColorModel可以是子类,因此子类继承此方法的实现,如果它们不覆盖它,则如果它们使用不受支持的transferType,则会抛出异常。
        重写:
        coerceData在类 ColorModel
        参数
        raster - WritableRaster数据
        isAlphaPremultiplied - true如果alpha被预乘; 否则为false
        结果
        表示强制数据的 ColorModel对象。
        异常
        UnsupportedOperationException - 此颜色模型不支持此 transferType
      • isCompatibleRaster

        public boolean isCompatibleRaster​(Raster raster)
        返回 true如果 raster与此兼容 ColorModelfalse ,如果事实并非如此。
        重写:
        isCompatibleRasterColorModel
        参数
        raster - 要测试兼容性的Raster对象
        结果
        true如果raster与此ColorModel兼容; 否则为false
      • toString

        public String toString()
        返回 String表示此 DirectColorModel
        重写:
        toString在课程 ColorModel
        结果
        String代表这个 DirectColorModel