讀取和寫入png文件時出現問題。我用ImageIO將它讀入一個字節數組,然後使用ImageIO再次寫入這個字節數組。但文件大小顯着增加。這怎麼會發生?PNG使用Java讀寫增加文件大小
public BufferedImage toBufferedImage(InputStream inputstream) {
try {
return ImageIO.read(inputstream);
} catch (Exception e) {
throw new IllegalStateException("Can't convert to buffered image", e);
}
}
public byte[] toByteArray(BufferedImage bufferedImage, String filetype) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
ImageIO.write(bufferedImage, filetype, output);
return output.toByteArray();
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
跟進:是否有任何庫,以支持用Java編寫,並且不需要任何本地代碼壓縮PNG圖片?
不知是否是加入某種上寫的附加頭或者向標題添加額外的數據。檢查是否這樣的一個好方法是以Beyond Compare之類的方式打開這兩個文件,並查看是否所有的差異都在開始處(標題所在的位置)。如果不是,那麼差異可能是無處不在的,這可能表明它將在整個文件中添加空白數據。我懷疑這是因爲它重新編碼了文件 - 但這可能是一種可能性。 –
我會想象這位作家對壓縮不是很聰明。也許有更好的輸出流或寫入器實現可以壓縮格式?包中的javadoc暗示了與此功能的接口。 – IanGilham