在java中更改bufferedImage像素

时间:2015-03-31 09:22:24

标签: java image java-8 bufferedimage bitwise-operators

我有一个小问题。 我有一个BufferedImage,其像素具有RGB值。 此代码用于根据de R,G,B,A值创建RGB值。

private int getRGB(int r, int g, int b, int a){
    return (a << 24) | (r << 16) | (g << 8) | b;
}

第一个问题是,如何从像素中获取R,G,B,A值,因为像素RGB将返回上面代码生成的数字。

如果我有这些值,我可以将2个像素放在彼此之上,以便计算新值或者我必须手动执行吗? 通过自动计算,当您将2个传输内容放在顶部时,您可以想到Java 2D,它将合并颜色。

非常感谢。

1 个答案:

答案 0 :(得分:2)

  

第一个问题是,如何从像素中获取R,G,B,A值,因为像素RGB将返回上面代码生成的数字。

您可以按如下方式撤消该过程:

int a = (argb >> 24) & 0xFF;
int r = (argb >> 16) & 0xFF;
int g = (argb >>  8) & 0xFF;
int b = (argb >>  0) & 0xFF;
  

如果我有这些值,我可以将2个像素放在彼此之上,以便计算新值或者我必须手动执行吗?通过自动计算,当您将2个传输内容放在顶部时,您可以想到Java 2D,它将合并颜色。

您需要手动执行此操作(或按像素调用实用程序方法),因为您需要决定如何合成颜色,例如你可以使用最大值,总和,平均值等像素值。