我正在尝试将长度为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因某种原因设置为null。我不明白为什么会这样。谁能帮助我?
答案 0 :(得分:1)
来自JavaDoc:
返回一个BufferedImage,作为解码提供的InputStream的结果,其中ImageReader是从当前注册的ImageReader中自动选择的。 InputStream包装在ImageInputStream中。如果没有已注册的ImageReader声称能够读取结果流,则返回 null 。
看起来好像字节数组的内容无法解码为已知的图像格式。
答案 1 :(得分:0)
我怀疑您的位数组中提供的数据与任何支持的文件格式都不对应,即任何已实现的ImageReader
都可以读取。
答案 2 :(得分:0)
如果你修改了一个不代表任何图像的方式,可能会有另一个获得null的原因,假设 - 如果你修改了第一个字节,即图像头字节,而不是图像数据。