为什么我的BufferedImage从一个字节数组返回null?

为什么我的BufferedImage从一个字节数组返回null?

问题描述:

基本上,我正在做的是将图像转换为字节数组,处理它,然后获得字节数组后,将其转换回图像。这里是我如何将字节数组转换为图像。为什么我的BufferedImage从一个字节数组返回null?

InputStream in = new ByteArrayInputStream(result); //result is the byte array 
BufferedImage bImageFromConvert; 
try { 
    bImageFromConvert = ImageIO.read(in); 
    ImageIO.write(
     bImageFromConvert, watermark_ext, new File(extracted_name_path)); 
} catch (Exception e) { 
    return e.getMessage(); 
} 

下面这段代码完全适用PNG或JPG图像,但是当我使用它的BMP图像,它返回说bImageFromConvert是空例外。任何人都可以请帮助我知道它为什么这样做?感谢大家。

答案是in the Javadoc

返回一个BufferedImage作为解码所提供 的ImageInputStream与来自 目前登记的那些中自动选择一个ImageReader的结果。如果没有注册的ImageReader声称是 能够读取流,则返回null。

这个previous post on SO更详细。

方法javax.imageio.ImageIO.getImageReadersBySuffix()可能对您有用。

+0

非常感谢你,先生!以前的帖子非常丰富。尝试这些新信息后,我会再次发表评论。 – Lights 2013-03-07 19:38:04

+0

对于这个问题的未来读者,我解决了这个问题。在恢复映像之前,我对字节数组进行了一些修改。为了恢复bmp图像,我没有做任何事情。这解决了它。谢谢奥宾。 – Lights 2013-03-11 17:41:38

+0

@Lights介意分享您所做的修改,即使3年过去了。 – Segmentation 2016-09-21 23:02:10