谁能为我解释一下 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 中获得红色、绿色和蓝色?
将TYPE_INT_ARGB
颜色表示为int
(4 字节),alpha 通道在 24-31 位,红色通道在 16-23,绿色在 8-15,蓝色在 0-7。
以与 相同的方式将TYPE_INT_RGB
Color 表示为int
(4 个字节)int TYPE_INT_ARGB
,但忽略 alpha 通道(或位 24-31 为 0)。
查看java.awt.Color和java.awt.image.BufferedImage的 javadoc 。
您对 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,因此得名。
这些是指示 的实例的颜色模型的常量值BufferedImage
。这些值本身不存储颜色。