java - 在 Java 中将 png 文件作为二维整数数组输入

标签 java arrays image png

我有两个灰度 Png 文件( /image/8RGh4.jpg ),我想将它们视为二维数组,以便我可以对它们应用蒙版。

最好的方法是什么?

如果可能的话转换回来,这样我就可以在程序运行时显示蒙版图像。

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

非常感谢

最佳答案

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

现在..做剩下的:)

关于java - 在 Java 中将 png 文件作为二维整数数组输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9327768/

相关文章:

ios - 在多任务模式下向服务器发送超过 200 张图像?

java - 我应该如何通过对相同值的列进行分组来读取 CSV

image - 将 RGB 转换为 sRGB?

java - android.support 库必须使用完全相同的版本规范

java - 如何以可序列化并通过 RMI 使用的方式包装多个字节数组

java - 另一种不滥用内存的方法

javascript - 如何在 Immutable.js 中读取数组中的值

java - 使图像向鼠标光标移动

java - 线程池不调整大小

Java - 使用数组显示一周的温度统计数据