【发布时间】:2012-03-12 20:40:19
【问题描述】:
我使用getRGB() 方法从BufferedImage 获取像素。像素存储在名为data[] 的数组中。在对数据数组进行一些操作之后,我需要再次创建一个BufferedImage,以便我可以将它传递给一个模块,该模块将显示来自这个数据数组的修改后的图像,但我坚持下去。
【问题讨论】:
标签: java image image-processing bufferedimage pixels
我使用getRGB() 方法从BufferedImage 获取像素。像素存储在名为data[] 的数组中。在对数据数组进行一些操作之后,我需要再次创建一个BufferedImage,以便我可以将它传递给一个模块,该模块将显示来自这个数据数组的修改后的图像,但我坚持下去。
【问题讨论】:
标签: java image image-processing bufferedimage pixels
我使用 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)具有相同表示形式的像素。
【讨论】:
bi.getRaster而不是res.getRaster?
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
然后重新设置像素。
bufferedImage.setRGB(x, y, your_value);
PS:如cmets中所述,请使用@TacticalCoder的答案
【讨论】:
您可以使用 setRGB 方法为新图像中的像素设置 RGB (int) 值。
【讨论】: