2014-11-24 110 views
3

爲什麼bImageFromConvert即使有數據也會變爲null?將字節轉換爲圖像

BufferedImage img = null; 
byte[] s; 
ArrayList<Byte> f; 
InputStream in; 
BufferedImage bImageFromConvert; 

public void print(ArrayList<Byte> lst) throws IOException { 
    byte[] o = new byte[lst.size()]; 
    for (int i = 0; i < lst.size(); i++) { 
     o[i] = lst.get(i); 
    } 
    in = new ByteArrayInputStream(o); 
    bImageFromConvert = ImageIO.read(in); 
+1

不受支持或無法識別文件格式? ImageIO只能處理一些默認的圖像類型(如jpg或png)。你的字節流應該代表什麼圖像格式? – cello 2014-11-24 20:50:06

+0

thx爲你的迴應,我解碼jpg文件到字節數組 我想使用那些字節,我解碼他們 – 2014-11-24 20:52:15

+0

我想嘗試寫出字節到一個新的文件,僅用於調試目的,並看看是否其他圖像觀衆可以打開文件。我目前的猜測是,在將字節傳遞給顯示的方法之前處理字節時出現問題。 – cello 2014-11-24 20:54:48

回答

3

還好,基於意見的討論:

你有一個字節流代表每個像素RGB。

ImageIO.read()根據Javadoc的說法:「返回一個BufferedImage,作爲對提供的InputStream進行解碼並自動從當前已註冊的ImageReader中選擇的ImageReader。」。因此,ImageIO.read()通常不會期望RGB像素字節,而是編碼爲JPG或PNG。由於它無法將字節流識別爲有效的圖像編碼,因此它將返回空值。

作爲如何獲得從RGB像素字節的圖像可能的解決方案,然後對SO給出:How to convert array of bytes into Image in Java SE

+0

這就是我想thx很多^ _ ^ – 2014-11-24 21:37:12