1

BufferedImage 的文档非常...简洁。

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

4

2 回答 2

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)

于 2013-10-15T13:44:16.747 回答
2

类型代表像素颜色类型。

与 TYPE_INT_ARGB 一样,ALPHA 分量使用 8 位,RED 分量使用 8 位,GREEN 分量使用 8 位,BLUE 分量使用 8 位。所以像素颜色可以存储在int值中。

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

与 TYPE_USHORT_555_RGB 一样,对于颜色的每个 RED、GREEN 和 BLUE 分量使用 5 位。由于它仅使用 5 位,因此它的颜色数量将比 TYPE_INT_ARGB 或 TYPE_3BYTE_BGR 有限。

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

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

于 2013-10-15T13:49:54.190 回答