【发布时间】:2011-08-20 23:48:00
【问题描述】:
我在 FSE 模式下使用带有 swing 的 Java。我想将完全黑白图像加载为二进制格式(最好是二维数组)并将其用于基于掩码的每像素碰撞检测。我什至不知道从哪里开始,过去一个小时我一直在研究,没有发现任何相关的东西。
【问题讨论】:
标签: java arrays image binary load
我在 FSE 模式下使用带有 swing 的 Java。我想将完全黑白图像加载为二进制格式(最好是二维数组)并将其用于基于掩码的每像素碰撞检测。我什至不知道从哪里开始,过去一个小时我一直在研究,没有发现任何相关的东西。
【问题讨论】:
标签: java arrays image binary load
只需使用ImageIO#read() 将其读入BufferedImage 并通过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);
}
}
【讨论】:
如果您从 URL 读取图像,它已经是二进制格式。只需下载数据并忽略它是图像的事实。毕竟,下载中涉及的代码不会在意。假设您要将其写入文件或类似的东西,只需打开URLConnection并打开FileOutputStream,并从网络上重复读取输入流,将您读取的数据写入输出流。
如果您不是从某个资源下载它,也可以使用ImageIO。
【讨论】: