Java-如何将黑白图像加载到二进制文件中?

时间:2011-05-08 03:33:22

标签: java arrays image binary load

我在FSE模式下使用Java和swing。我想将完全黑白的图像加载成二进制格式(最好是2d数组)并将其用于基于掩码的每像素碰撞检测。我甚至不知道从哪里开始,我一直在研究过去一小时,但没有发现任何相关内容。

2 个答案:

答案 0 :(得分:2)

只需使用BufferedImage将其读入ImageIO#read(),然后按BufferedImage#getRGB()获取单个像素。 0xFFFFFFFF的值为白色,残余为彩色。假设您想将白色表示为字节0而将颜色(黑色)表示为字节1,这里是一个启动示例:

BufferedImage image = ImageIO.read(new File("/some.jpg"));
byte[][] pixels = new byte[image.getWidth()][];

for (int x = 0; x < image.getWidth(); x++) {
    pixels[x] = new byte[image.getHeight()];

    for (int y = 0; y < image.getHeight(); y++) {
        pixels[x][y] = (byte) (image.getRGB(x, y) == 0xFFFFFFFF ? 0 : 1);
    }
}

另见:

答案 1 :(得分:1)

如果您正在从URL中读取图像,则它已经是二进制格式。只需下载数据并忽略它是图像的事实。毕竟,参与下载的代码无关紧要。假设您要将其写入文件或类似内容,只需打开URLConnection并打开FileOutputStream,然后重复读取来自Web的输入流,将您读过的数据写入输出流。

如果您没有从某个资源下载它,也可以使用ImageIO