Module  javafx.graphics
软件包  javafx.scene.image

Class PixelFormat<T extends Buffer>

  • 已知直接子类:
    WritablePixelFormat


    public abstract class PixelFormat<T extends Buffer>
    extends Object
    A PixelFormat对象定义给定格式的像素的数据布局。
    从以下版本开始:
    JavaFX 2.2
    • 方法详细信息

      • getIntArgbInstance

        public static WritablePixelFormat<IntBuffer> getIntArgbInstance​()
        返回描述像素布局的WritablePixelFormat实例,其中以32位整数存储的像素与非预乘数组件按顺序存储,从MSb到LSb:alpha,red,green,blue。

        可以使用以下示例代码对此格式的像素进行解码:

           int pixel = array[rowstart + x]; int alpha = ((pixel >> 24) & 0xff); int red = ((pixel >> 16) & 0xff); int green = ((pixel >> 8) & 0xff); int blue = ((pixel >> ) & 0xff);  
        结果
        描述指示的像素格式的 WritabelPixelFormat<IntBuffer>
      • getIntArgbPreInstance

        public static WritablePixelFormat<IntBuffer> getIntArgbPreInstance​()
        返回描述像素布局的WritablePixelFormat实例,其中以32位整数存储的像素,其中预乘数组件按顺序存储,从MSb到LSb:alpha,红,绿,蓝。

        可以使用以下示例代码对此格式的像素进行解码:

           int pixel = array[rowstart + x]; int alpha = ((pixel >> 24) & 0xff); int red = ((pixel >> 16) & 0xff); int green = ((pixel >> 8) & 0xff); int blue = ((pixel >> ) & 0xff);  
        结果
        描述指示的像素格式的 WritabelPixelFormat<IntBuffer>
      • getByteBgraInstance

        public static WritablePixelFormat<ByteBuffer> getByteBgraInstance​()
        返回描述像素布局的WritablePixelFormat实例,其中存储在相邻字节中的像素, 非预乘数组件以增加的索引:蓝色,绿色,红色,alpha的顺序存储。

        可以使用以下示例代码对此格式的像素进行解码:

           int i = rowstart + x * 4; int blue = (array[i+0] & 0xff); int green = (array[i+1] & 0xff); int red = (array[i+2] & 0xff); int alpha = (array[i+3] & 0xff);  
        结果
        描述指示的像素格式的 WritablePixelFormat<ByteBuffer>
      • getByteBgraPreInstance

        public static WritablePixelFormat<ByteBuffer> getByteBgraPreInstance​()
        返回描述像素布局的WritablePixelFormat实例,其中存储在相邻字节中的像素,其中预乘数组件以增加的索引:蓝色,绿色,红色,alpha的顺序存储。

        可以使用以下示例代码对此格式的像素进行解码:

           int i = rowstart + x * 4; int blue = (array[i+0] & 0xff); int green = (array[i+1] & 0xff); int red = (array[i+2] & 0xff); int alpha = (array[i+3] & 0xff);  
        结果
        描述指示的像素格式的 WritablePixelFormat<ByteBuffer>
      • getByteRgbInstance

        public static PixelFormat<ByteBuffer> getByteRgbInstance​()
        返回描述像素布局的PixelFormat实例,其中存储在相邻字节中的像素的颜色分量按照增加的索引顺序存储:红色,绿色和蓝色。

        可以使用以下示例代码对此格式的像素进行解码:

           int i = rowstart + x * 3; int red = (array[i+0] & 0xff); int green = (array[i+1] & 0xff); int blue = (array[i+2] & 0xff);  
        结果
        描述指示的像素格式的 PixelFormat<ByteBuffer>
      • createByteIndexedPremultipliedInstance

        public static PixelFormat<ByteBuffer> createByteIndexedPremultipliedInstance​(int[] colors)
        创建描述像素布局的PixelFormat实例,其中像素存储为单个字节,表示INT_ARGB_PRE格式的预乘颜色值的指定查找表中的索引

        可以使用以下示例代码对此格式的像素进行解码:

           int pixel = array[rowstart + x] &amp; 0xff; int argb = colors[pixel]; int alpha = ((argb >> 24) & 0xff); int red = ((argb >> 16) & 0xff); int green = ((argb >> 8) & 0xff); int blue = ((argb ) & 0xff);  
        参数
        colors - INT_ARGB_PRE格式的 int[]阵列的32位颜色值
        结果
        a PixelFormat<ByteBuffer>描述指定的像素格式与指定的预乘颜色列表
      • createByteIndexedInstance

        public static PixelFormat<ByteBuffer> createByteIndexedInstance​(int[] colors)
        创建描述像素布局的PixelFormat实例,其中像素存储为单个字节,表示索引到INT_ARGB格式的非预乘颜色值的指定查找表中。

        可以使用以下示例代码对此格式的像素进行解码:

           int pixel = array[rowstart + x] &amp; 0xff; int argb = colors[pixel]; int alpha = ((argb >> 24) & 0xff); int red = ((argb >> 16) & 0xff); int green = ((argb >> 8) & 0xff); int blue = ((argb ) & 0xff);  
        参数
        colors - int[] INT_ARGB格式的32位颜色值的 int[]数组
        结果
        一个 PixelFormat<ByteBuffer>描述指定的像素格式与指定的非预乘颜色列表
      • getType

        public PixelFormat.Type getType​()
        返回表示由此 PixelFormat对象管理的像素的存储格式的枚举。
        结果
        Type枚举的像素
      • isWritable

        public abstract boolean isWritable​()
        如果这个 PixelFormat对象可以将颜色信息转换为像素表示,则返回true。
        结果
        如果这个 PixelFormat可以将颜色转换为像素数据, PixelFormat true
      • isPremultiplied

        public abstract boolean isPremultiplied​()
        如果通过此格式解码(或编码)的颜色分量被alpha分量预乘以更有效的混合计算,则返回true。
        结果
        如果被管理的颜色组件被alpha预乘,则为true
      • getArgb

        public abstract int getArgb​(T buf,
                                    int x,
                                    int y,
                                    int scanlineStride)
        从指定坐标的缓冲区读取像素数据,并将其转换为INT_ARGB格式的颜色的32位整数表示形式。 32位整数将包含从最高有效字节到最低有效字节的ARGB顺序的单独8位字段中的4种颜色分量。 缓冲器应该位于像素数据的开始处,使得buf.get(0)将返回坐标(0, 0)处的像素的像素信息。 scanlineStride参数定义了从一行开始处的像素数据到下一个较高Y坐标处紧随其后的行开始处的像素数据的距离。 通常, scanlineStride与图像的宽度乘以每像素的数据元素数(在整数和索引格式的情况下为1,在字节格式的情况下为3或4),但某些图像可能在行之间进一步填充以进行对准或其他目的。

        可以使用以下示例代码从返回的整数中提取颜色分量:

          int alpha = ((retval >> 24) & 0xff);
             int red   = ((retval >> 16) & 0xff);
             int green = ((retval >>  8) & 0xff);
             int blue  = ((retval      ) & 0xff); 
        参数
        buf - 像素数据的缓冲区
        x - 要读取的像素的X坐标
        y - 要读取的像素的Y坐标
        scanlineStride - 缓冲区中相邻像素行开始之间的缓冲元素数
        结果
        a 32-bit value with the color of the pixel in a format similar to the INT_ARGB pixel format