使用红色和蓝色值为像素着色(BufferedImage)?

时间:2014-04-07 15:48:19

标签: java bufferedimage

我从pixel获得get.RGB的红色和蓝色值并使用bitwise运算符:

            red = (rgb[i][j] >> 8) & 0xFF;
            blue = rgb[i][j] & 0xFF;

但是如何使用"红色和蓝色值的平均值来重新着色有问题的像素"?

这意味着我必须排除绿色。

唯一需要的导入是BufferedImage。

1 个答案:

答案 0 :(得分:0)

你的问题真的不清楚。问你的老师你想要达到的目标,然后我们可以帮助你这样做。以下是一些可以帮助您的元素。

获取RGB数字

的红色,绿色和蓝色

你的第一部分几乎是正确的。请记住getRGB()返回的颜色各为8位,因此以下是获取它们的方法:

int red = (rgb[i][j] >> 16) & 0xFF; 
int green = (rgb[i][j] >> 8) & 0xFF;
int blue = rgb[i][j] & 0xFF;

根据红色,绿色和蓝色值构建RGB数字

如果您的问题是如何将rgb颜色重新组合成一个数字,请按以下步骤操作:

pixelColor = (red << 16) + (green << 8) + blue

用它做你想做的事

红色和蓝色的平均值非常明显,这是你指出的公式:

int average = (red + blue) / 2;

如果你想要的是使用红色和绿色平均值的紫色像素,那么你只需要将红色和蓝色设置为平均值,将绿色设置为0:

int pixelColor = (average << 16) + average // using average for red and blue, and 0 for green

编辑:看起来你根本不想拿绿色。

int pixelColor = (average << 16) + (green << 8) + average // using average for red and blue, and keep the green unchanged

编辑:或许你想让绿色取红色和蓝色的平均值?

int pixelColor = (red << 16) + (average << 8) + blue; // keep red and bllue, and put their average as the green color
相关问题