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

Sau*_*abh 2 java bufferedimage image image-processing pixels

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

Tac*_*der 21

我使用方法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);
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为您的代码中有一个错误:您是说`bi.getRaster`而不是`res.getRaster`吗? (2认同)