我使用getRGB()
方法从BufferedImage
中获取像素。像素存储在一个名为data[]
的数组中。在对数据数组进行一些操作后,我需要再次创建一个BufferedImage
,以便将其传递给一个模块,该模块将显示修改后的图像,但我卡在这里了。
我使用getRGB()
方法从BufferedImage
中获取像素。像素存储在一个名为data[]
的数组中。在对数据数组进行一些操作后,我需要再次创建一个BufferedImage
,以便将其传递给一个模块,该模块将显示修改后的图像,但我卡在这里了。
我使用 getRGB() 方法从 BufferedImage 中获取像素。像素存储在名为 data[] 的数组中。
请注意,这可能非常慢。如果您的 BufferedImage 支持,您可能希望直接访问底层的 int[] 并从那里直接复制/读取像素。
例如,要快速将您的 data[] 复制到新 BufferedImage 的底层 int[] 中:
BufferedImage bi = new BufferedImage( w, h, BufferedImage.TYPE_INT_ARGB );
final int[] a = ( (DataBufferInt) res.getRaster().getDataBuffer() ).getData();
System.arraycopy(data, 0, a, 0, data.length);
当然你要确保你的data[]包含的像素与你的BufferedImage相同的表示方式(在这个例子中为ARGB)。BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
然后再次设置像素。
bufferedImage.setRGB(x, y, your_value);
注:正如评论中所述,请使用 @TacticalCoder 的答案。
您可以使用setRGB方法为新图像中的像素设置RGB(int)值。
bi.getRaster
而不是res.getRaster
? - RDM