不同类型的BufferedImage是什么意思?

时间:2013-10-15 13:36:41

标签: java bufferedimage

BufferedImage的文档非常简洁。

不同类型的含义是什么?当我为TYPE_INT_ARGB调用getPixel()时,我会得到什么?当类型为TYPE_3BYTE_BGR时,它与我得到的有什么不同?其他类型呢?

2 个答案:

答案 0 :(得分:2)

TYPE_INT_ARGB使用Integer来保存像素的颜色,如

int color = 0xAARRGGBB,

但3BYTE_BGR使用

byte[] color = new byte[Blue, Green, Red]

我建议使用INT_ARGB,你可以使用alpha,在3BYTE中没有通道alpha。整数比字节数组更容易,例如使用任何颜色:

(COLOR >> 16) & 0xFF; (24-16 bits are RED).
(COLOR >>  8) & 0xFF; (16- 8 bits are GREEN).
(COLOR >>  0) & 0xFF; ( 8- 0 bits are BLUE).

我总是使用INT_ARGB或INT_RGB(如果我不需要alpha)

答案 1 :(得分:2)

Type表示像素颜色类型。

类似于TYPE_INT_ARGB,对于ALPHA组件使用8位,对于RED组件使用8位,对于GREEN组件使用8位,对于蓝色颜色组件使用8位。因此像素颜色可以存储在int值中。

TYPE_3BYTE_BGR不存储颜色的ALPHA组件。它仅使用3个字节的int值。

与TYPE_USHORT_555_RGB一样,每个RED,GREEN和BLUE组件使用5位颜色。由于它仅使用5位,因此它的颜色数量将少于TYPE_INT_ARGB或TYPE_3BYTE_BGR。

ALPHA组件表示图像是如何透明的。

同样,其他类型定义了不同的配色方案。