Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中更改BuffereImage像素_Java_Image_Java 8_Bufferedimage_Bitwise Operators - Fatal编程技术网

在java中更改BuffereImage像素

在java中更改BuffereImage像素,java,image,java-8,bufferedimage,bitwise-operators,Java,Image,Java 8,Bufferedimage,Bitwise Operators,我有个小问题。 我有一个BuffereImage,它有一个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; } private int getRGB(int r,int g,int b,int a){ 返回(a) 第一个问题是,如何从像素中获取R、G

我有个小问题。 我有一个BuffereImage,它有一个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;
}
private int getRGB(int r,int g,int b,int a){
返回(a)
第一个问题是,如何从像素中获取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;
如果我有这些值,我可以把两个像素放在彼此的上面,这样它就可以计算新的值,还是我必须手动计算呢?通过自动计算,你可以想到Java 2D,当你把两个传输对象放在上面时,它会合并颜色


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

当然,程序员必须决定如何合成,但一旦做出决定,有一个丰富的API称为AWT/Java2D,它可以;使之成为可能。除非我们了解OP为什么说“您可以考虑Java 2D”而不是仅仅使用Java 2D…对于问题的第二部分,请参见。但是,如果您可以仅使用Java 2D,则会使生活更轻松,因为它已经实现了Porter/Duff alpha合成(请参见
Graphics2D
AlphaComposite
类)。