如何将Alpha,红色,绿色,蓝色的4个单独的Int值更改为TYPE_INT_RGB?

时间:2012-05-12 22:08:48

标签: java image bufferedreader

谢谢你的时间:)。我已经看了Format of TYPE_INT_RGB and TYPE_INT_ARGB,现在知道如何将这个TYPE_INT_RGB转换成4个单独的值,但是如果我要对每个值进行修改(比如每个加20,那么Alpha + = 20,red + = 20 ,等等)我如何将这些值重新组合成这种TYPE_INT_RGB格式?谢谢!

3 个答案:

答案 0 :(得分:4)

// to extract the components into individual ints.
int argb = something();
int red = 0xFF & ( argb >> 16);
int alpha = 0xFF & (argb >> 24);
int blue = 0xFF & (argb >> 0 );
int green = 0xFF & (argb >> 8 );

// to recreate the argb
int argb = (alpha << 24) | (red << 16 ) | (green<<8) | blue;

答案 1 :(得分:3)

我相信这应该有用

int RGB = alpha;
RGB = (RGB << 8) + red;
RGB = (RGB << 8) + green;
Rgb = (RGB << 8) + blue;

还有另一种没有位移的方式,但我相信你会弄明白的。

这个也没关系:

int rgba = new java.awt.Color(r,g,b,a).getRGB();

答案 2 :(得分:3)

我会使用java.awt.Color

int ARGB = new Color(red, green, blue, alpha).getRGB();

我猜你使用按位运算来拉出各个颜色通道,但Color类可以隐藏那些血腥细节。

Color color = new Color(ARGB);
int red = color.getRed();
int green = color.getGreen();
// etc.