2

我正在尝试将长度为 128 的字节数组转换为存储在 BufferedImage 中的 32x32 位图。我正在使用以下代码:

private BufferedImage fSP;

public Pattern( byte[] aBitData ) {
  if ( aBitData == null ) {
    throw new IllegalArgumentException( "Please provide a non-null byte array of length 128: " + aBitData );
  }
  else if ( aBitData.length != 128 ) {
    throw new IllegalArgumentException( "Please provide a non-null byte array of length 128: " + aBitData.length );
  }
  InputStream in = new ByteArrayInputStream( aBitData );
  try {
    fSP = ImageIO.read( in );
  } catch( IOException e ) {
    e.printStackTrace();
  }
}

但每次 fSP 出于某种原因设置为空。我不明白为什么会这样。谁能帮帮我?

4

3 回答 3

1

JavaDoc

返回一个 BufferedImage 作为使用从当前注册的那些中自动选择的 ImageReader 解码提供的 InputStream 的结果。InputStream 包装在 ImageInputStream 中。如果没有注册的 ImageReader 声称能够读取结果流,则返回 null

看起来好像无法将字节数组的内容解码为已知的图像格式。

于 2011-10-31T10:21:04.283 回答
0

我怀疑您的位数组中提供的数据不对应于任何受支持的文件格式,即可以由任何已实现ImageReader的 s 读取。

于 2011-10-31T10:20:30.727 回答
0

如果您以不代表任何图像的方式修改 aBitData 可能还有另一个导致 null 的原因,假设 - 如果您修改第一个字节,即图像标题字节,而不是图像数据。

于 2012-12-16T10:27:28.557 回答