2013-03-07 152 views
3

基本上,我正在做的是將圖像轉換爲字節數組,處理它,然後獲得字節數組後,將其轉換回圖像。這裏是我如何將字節數組轉換爲圖像。爲什麼我的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是空例外。任何人都可以請幫助我知道它爲什麼這樣做?感謝大家。

回答

1

答案是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