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

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

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

然后再次设置像素。

 bufferedImage.setRGB(x, y, your_value); 

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

我使用方法getRGB()从BufferedImage获取像素。 像素存储在名为data []的数组中。

请注意,这可能非常慢。 如果你的BufferedImage支持它,你可能想要访问底层的int []并直接从那里复制/读取像素。

例如,要将数据[]快速复制到新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); 

当然,您希望确保数据[]包含与BufferedImage相同的像素(本例中为ARGB)。

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