【问题标题】:Java bitmap reading [duplicate]Java位图读取[重复]
【发布时间】: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 值(或者更好的是所有十六进制值的字节数组)

标签: java file bitmap rgb


【解决方案1】:

试试这个方法:

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();

【讨论】:

  • 这可能是图像的压缩表示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 2011-12-04
  • 1970-01-01
  • 2014-02-04
  • 1970-01-01
相关资源
最近更新 更多