将png文件作为Java中的2D整数数组

时间:2012-02-17 11:54:32

标签: java arrays image png

我有两个灰度Png文件(http://imgur.com/a/9F7UW),我想将其视为二维数组,以便我可以为它们应用蒙版。

这样做的最佳方式是什么?

如果可能的话可以转换回来,所以我可以在我的程序工作时显示蒙面图像。

这是大学的作业,只需知道如何获取数据,然后我会做其余的。

非常感谢

1 个答案:

答案 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]);
    }
}

现在......做其余的事情:))