17

谁能为我解释一下 java 如何在 TYPE_INT_RGB 和 TYPE_INT_ARGB 中存储颜色?
这些代码行是否适用于计算红色、绿色和蓝色?

int red= (RGB>>16)&255;
int green= (RGB>>8)&255;
int blue= (RGB)&255;

那么 TYPE_INT_ARGB 呢?如何从 TYPE_INT_ARGB 中获得红色、绿色和蓝色?

4

3 回答 3

27

TYPE_INT_ARGB颜色表示为int(4 字节),alpha 通道在 24-31 位,红色通道在 16-23,绿色在 8-15,蓝色在 0-7。

以与 相同的方式将TYPE_INT_RGBColor 表示为int(4 个字节)int TYPE_INT_ARGB,但忽略 alpha 通道(或位 24-31 为 0)。

查看java.awt.Colorjava.awt.image.BufferedImage的 javadoc 。

于 2011-05-14T10:40:40.787 回答
11

您对 TYPE_INT_RGB 是正确的。等效的 TYPE_INT_ARGB 代码为:

int rgb = rgbColor.getRGB(); //always returns TYPE_INT_ARGB
int alpha = (rgb >> 24) & 0xFF;
int red =   (rgb >> 16) & 0xFF;
int green = (rgb >>  8) & 0xFF;
int blue =  (rgb      ) & 0xFF;

将字节的颜色元素从最重要到最不重要拼写出来,你会得到 ARGB,因此得名。

于 2011-12-25T14:25:06.443 回答
0

这些是指示 的实例的颜色模型的常量值BufferedImage。这些值本身不存储颜色。

于 2011-05-14T10:43:48.607 回答