我有两个灰度Png文件(http://imgur.com/a/9F7UW),我想将其视为二维数组,以便我可以为它们应用蒙版。
这样做的最佳方式是什么?
如果可能的话可以转换回来,所以我可以在我的程序工作时显示蒙面图像。
这是大学的作业,只需知道如何获取数据,然后我会做其余的。
非常感谢
答案 0 :(得分:4)
try {
URL url = new URL("http://i.imgur.com/Ad0AP.png");
Image image = Toolkit.getDefaultToolkit().createImage(url);
} catch (MalformedURLException e) {
} catch (IOException e) {}
然后,您可以使用以下代码将Image
实例转换为BufferedImage
:
public static BufferedImage toBufferedImage(Image image) {
if (image instanceof BufferedImage) {
// Return image unchanged if it is already a BufferedImage.
return (BufferedImage) image;
}
// Ensure image is loaded.
image = new ImageIcon(image).getImage();
BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bufferedImage.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
return bufferedImage;
}
然后获取图像的宽度和高度以循环显示它,在您拥有它之后,您几乎可以将它放在您喜欢的任何数据结构中。即:
int w = i.getWidth();
int h = i.getHeight();
int[][] array = new int[w][h];
for (int j = 0; j < w; j++) {
for (int k = 0; k < h; k++) {
array[j][k] = i.getRGB(j, k); // or whatever
System.out.println("jk=" + array[j][k]);
}
}
现在......做其余的事情:))