2013-07-18 77 views
1

我有以下的Java代碼,圖像寫入的字節數組,然後回的圖像:ImageIO的不工作在Ubuntu

BufferedImage bi = ImageIO.read(new File("1.png")); 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(bi,"png",baos); 
byte[] img = baos.toByteArray(); 
ByteArrayInputStream bais = new ByteArrayInputStream(img); 
BufferedImage bif = ImageIO.read(bais); 

在OS X上,這個工作完全正常,但在Ubuntu上,BIF (最終圖像)在最後變爲空,這意味着從ByteArrayInputStream讀取有問題。我在這兩種情況下都使用oracle jdk,並且不知道發生了什麼。

編輯:我瘋了的更多證據:我在Ubuntu和OSX上使用FileOutputStream將img字節數組打印到文件中,然後區分這兩個文件,它們完全相同。這意味着ByteArrayInputStream不同或(更可能)第二個ImageIO.read由於某種原因不起作用。

+0

任何類型的'Exception'拋出? –

+0

不,bif最後只是空。 – codersarepeople

+0

在字節數組img中有用嗎?它可能是空的或不是有效的PNG(對於編解碼器可能存在一些問題)。您應該輸出數組並可能發佈它(或至少第一個字節,以標識PNG頭)。 – Mnementh

回答