我目前正在使用以下代码将像素值数组(最初由java.awt.image.PixelGrabber对象创建)转换为Image对象:
public Image getImageFromArray(int[] pixels, int width, int height) {
MemoryImageSource mis = new MemoryImageSource(width, height, pixels, 0, width);
Toolkit tk = Toolkit.getDefaultToolkit();
return tk.createImage(mis);
}
是否可以使用ImageIO包中的类来实现相同的结果,这样我就不必使用AWT Toolkit了?
Toolkit.getDefaultToolkit()似乎并不完全可靠,有时会抛出AWTError,而ImageIO类应该始终可用,这就是我想改变我的方法的原因。
BufferedImage.getData()
返回一个Raster
并且BufferedImage.getRaster()
返回一个WritableRaster
。因此,如果使用getData()
似乎它会返回一份副本,并且在执行setPixels()
后必须使用BufferedImage.setData()
将其放回,这是一种额外的开销。因此最好使用getRaster()
并对其进行操作。 - Alireza Kazemi