【发布时间】:2018-12-13 07:12:16
【问题描述】:
我想读入一个位图,这样我就有一个包含每个像素的 256-RGB 值的数组。
目前我的代码是:
File image = serverConfig.get(map.bmp);
BufferedImage buffer = ImageIO.read(image);
dimX = buffer.getWidth();
dimY = buffer.getHeight();
byte[] pixlesB = (byte[]) buffer.getRaster().getDataElements(0, 0, buffer.getWidth(), buffer.getHeight(), null);
这会产生位图的字节数组,例如
[pixel1Red,pixel1Green,pixel1Blue,pixel2Red,pixel2Green,pixel2Blue,...]
我的问题是,当我加载一个大位图(目前我正在尝试的是大约 706,000 像素^2)时,位图无损压缩文件,我只得到一串半无意义的数字。 有什么办法可以强制 java 读取所有位图的 RGB 值,就像读取小的位图一样?
编辑:
为了澄清,我正在返回一个 [pixel1Red,pixel1Green,pixel1Blue,pixel2Red,pixel2Green,pixel2Blue,...] 样式列表,但其中的值不是我期望的 0-255 字节,它们'只是随机的压缩数字。我需要为 RGB 设置 0-255 的实际值(或者更好的是所有十六进制值的字节数组),以便我的其余代码能够可靠地工作。
【问题讨论】:
-
试过这样的解决方案吗? stackoverflow.com/questions/6524196/…
-
是的,但这仍然不起作用。澄清一下,我正在返回一个 [pixel1Red,pixel1Green,pixel1Blue,pixel2Red,pixel2Green,pixel2Blue,...] 样式列表,但其中的值 不是 我的 0-255 字节我期待,它们只是随机的压缩数字。我需要 RGB 的实际 0-255 值(或者更好的是所有十六进制值的字节数组)