Chr*_*ers 27 java image toolkit awt javax.imageio
我目前正在使用以下代码将像素值数组(最初使用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);
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用ImageIO软件包中的类来实现相同的结果,因此我不必使用AWT工具包?
Toolkit.getDefaultToolkit()似乎不是100%可靠,有时会抛出一个AWTError,而ImageIO类应该始终可用,这就是为什么我有兴趣改变我的方法.
Bre*_*man 27
您可以在不使用ImageIO的情况下创建图像.只需使用与像素数组内容匹配的图像类型创建BufferedImage.
public static Image getImageFromArray(int[] pixels, int width, int height) {
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
WritableRaster raster = (WritableRaster) image.getData();
raster.setPixels(0,0,width,height,pixels);
return image;
}
Run Code Online (Sandbox Code Playgroud)
使用PixelGrabber时,不要忘记在调用之前从像素阵列中提取RGBA信息getImageFromArray.在PixelGrabber javadoc 的handlepixel方法中有一个这样的例子.完成后,请确保BufferedImage构造函数中的图像类型为BufferedImage.TYPE_INT_ARGB.
使用我的光栅ArrayIndexOutOfBoundsException,当我创建的,甚至BufferedImage用TYPE_INT_ARGB.但是,使用的setRGB(...)方法BufferedImage为我工作.
| 归档时间: |
|
| 查看次数: |
56149 次 |
| 最近记录: |