2011-04-01 91 views
7

我想從bufferedImage獲取bytearray,但我的ByteArrayOutputstream的長度始終爲零,我沒有得到任何字節。這是我在做什麼BufferedImage字節Java

任何想法,爲什麼這不工作

BufferedImage scaledPicture = ..... 

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(scaledPicture, extension, baos); 
baos.flush(); 
byte[] toByteArray = baos.toByteArray(); 
baos.close(); 
return toByteArray; 

任何想法?

回答

3

什麼是ImageIO.write的返回值? ImageIO.getImageWritersByFormatName您的延期是否至少返回1 ImageWriter?如果不是,那麼格式可能不被支持。

+0

非常感謝你。它正在返回假,所以沒有作者發現。由於圖像是從瀏覽器上傳的,我如何確定格式或如何在ImageIO.write調用中指定格式? – 2011-04-01 03:09:31

+0

@Farouk Alhassan我會嘗試使用'ImagIO.getImageWritersBySuffix',看看你是否有任何'ImageWriter'回來。如果是這樣,你可以很容易地用它們的'write'方法來編寫你的'RenderedImage'。無論如何,你目前使用的方法只是一個簡單的包裝。 – Melv 2011-04-01 03:24:42

+0

非常感謝。一天後修復它。純粹是因爲舊單元未經測試的代碼錯誤地計算文件擴展名,返回.jpeg而不是jpeg,因此浪費了一天!得到教訓。無論如何,我今天比昨天知道更多,所以感激不盡。 tx – 2011-04-01 03:28:16

1

'ImageIO.write(...)'調用是否返回true?如果否,JVM可能無法找到適當格式的作者。