使用setRGB设置0-255值而不是十六进制代码值

时间:2014-05-10 22:41:39

标签: java colors hex

我目前正在使用.setRGB()方法。似乎int[] rgbArray的输入是十六进制代码值,它们是非常大的整数值。我目前有一组整数,范围从0到255,因此每当我使用.setRGB输入它们时,图像只是纯黑色,考虑到十六进制值与RGB值的范围,这是有意义的。

我想知道有没有办法让我使用非十六进制值?

2 个答案:

答案 0 :(得分:0)

不是十六进制;它是一个有点混乱的RGB。我会使用java.awt.Color,然后拨打getRGB()。所以,

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

答案 1 :(得分:0)

正如其他答案所述,"大值"你所说的是颜色的组合R,G,B组件,可能还有一个" Alpha"成分

使用setRGB方法设置值255应该会使像素变为完全蓝色 - ,除非它是具有Alpha通道的图像。在这种情况下,它将成为一个完美的透明蓝色(又名"黑色")。

但是,如果value介于0和255之间,则可以将其转换为RGB值(0 =黑色,255 =白色),如下所示:

int value = ...
int rgb = (255 << 24) | (value << 16) | (value << 8) | value;

(此处的alpha分量设置为255.对于没有Alpha通道的图像,这不会改变任何内容。但对于具有alpha通道的图像,这对于确保颜色实际上可见<至关重要/ em>的)