我看到有很多人有類似的問題,但我還沒有嘗試找到我正在尋找的東西。Java:緩衝圖像到字節數組並返回
所以,我有讀取輸入圖像,並將其轉換爲字節數組的方法:
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
我現在想要做的就是將其轉換回一個BufferedImage(我有一個針對應用程序我需要這個功能)。請注意,「測試」是字節數組。
BufferedImage img = ImageIO.read(new ByteArrayInputStream(test));
File outputfile = new File("src/image.jpg");
ImageIO.write(img,"jpg",outputfile);
然而,這將返回以下異常:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
這是因爲BufferedImage的IMG爲空。我認爲這與事實有關,在我從BufferedImage到字節數組的原始轉換中,信息被改變/丟失,使得數據不能再被識別爲jpg。
有沒有人有任何建議如何解決這個問題?將不勝感激。
沖洗和關閉會做沒有什麼 – 2014-02-28 10:57:36
在這裏使用jpg有沒有特別的理由? – hguser 2014-07-03 08:52:11
如果close()沒有做任何事情,它會調用flush()本身,並且有必要在* toByteArray()之前調用它,而不是在它之後調用它。 – EJP 2014-08-03 23:54:11