如何从包含像素的数组创建BufferedImage?

时间:2012-02-22 13:53:25

标签: java image image-processing bufferedimage pixels

我使用方法BufferedImagegetRGB()获取像素。像素存储在名为data[]的数组中。在对数据数组进行一些操作之后,我需要再次创建一个BufferedImage,以便我可以将它传递给一个模块,该模块将显示来自此数据数组的已修改图像,但我坚持使用它。

3 个答案:

答案 0 :(得分:21)

  

我使用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)。

答案 1 :(得分:2)

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

然后再次设置像素。

bufferedImage.setRGB(x, y, your_value);

PS:如评论中所述,请使用@TacticalCoder的答案

答案 2 :(得分:-1)

您可以使用setRGB方法为新图像中的像素设置RGB(int)值。