Java位图读取
我想读入位图,这样每个像素就有一个256-RGB值的数组 目前我的代码是:Java位图读取,java,file,bitmap,rgb,Java,File,Bitmap,Rgb,我想读入位图,这样每个像素就有一个256-RGB值的数组 目前我的代码是: File image = serverConfig.get(map.bmp); BufferedImage buffer = ImageIO.read(image); dimX = buffer.getWidth(); dimY = buffer.getHeight(); byte[] pixlesB = (byte[]) buffer.getRaster().getDataEle
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);
这将生成位图的字节数组,例如
[像素1red,像素1green,像素1blue,像素2red,像素2green,像素2blue,…]
我的问题是,当我加载一个大位图(目前我正在尝试的是大约706000像素^2)时,位图无损压缩文件,我只得到一个半无意义的数字字符串。
有没有办法强迫java像读取小位图一样读取所有位图的RGB值
编辑:
为了澄清,我得到了一个[pixel1Red,pixel1Green,pixel1Blue,pixel2Red,pixel2Green,pixel2Blue,…]样式列表,但是其中的值不是我期望的0-255字节,它们只是随机的压缩数字。我需要为RGB实际输入0-255个值(最好是所有十六进制值的字节数组),以便我的其余代码可靠地工作。尝试以下方法:
File image = serverConfig.get(map.bmp);
BufferedImage buffer = ImageIO.read(image);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(buffer, "bmp", baos );
baos.flush();
byte[] pixlesB = baos.toByteArray();
baos.close();
这可能是这种解决方案的压缩表示?是的,但这仍然不起作用。为了澄清,我得到了一个[pixel1Red,pixel1Green,pixel1Blue,pixel2Red,pixel2Green,pixel2Blue,…]样式列表,但是其中的值不是我期望的0-255字节,它们只是随机的压缩数字。我需要计算RGB的实际0-255值(或者更好的是,只需一个包含所有十六进制值的字节数组)