Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java位图读取_Java_File_Bitmap_Rgb - Fatal编程技术网

Java位图读取

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

我想读入位图,这样每个像素就有一个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);
这将生成位图的字节数组,例如

[像素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值(或者更好的是,只需一个包含所有十六进制值的字节数组)