[英]Java ImageIO IIOException: Unsupported image type?ImageIO can't read CMYK-encoded Images
[英]Decoding with Qt an Image Encoded with Java ImageIO class
我想使用C ++顯示圖像,更確切地說是使用Qt Framework。 圖像已使用ImageIO.write方法以這種方式編碼:
BufferedImage originalImage = ImageIO.read(new File("c:\\image.jpg"));
// convert BufferedImage to byte array
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(originalImage, "jpg", baos);
baos.flush();
imageInByte = baos.toByteArray();
baos.close();
然后,將ByteArrayOutputStream的內容簡單地轉儲到文件image.out中,這是我需要使用C ++轉換回Image的文件。 我看到文件image.jpg的大小大於image.out文件的大小,因此Java必須進行一些我不知道的壓縮或編碼。 因此,我不能只將圖像讀取為JPG並將其放在QImage或QPixmap對象中。
有誰知道ImageIO類如何編碼圖像?
有誰知道ImageIO類如何編碼圖像?
最好的選擇可能是閱讀Oracle的《 Java Image I / O API指南》 。
它描述了基礎知識和用於編寫的插件機制。 您至少要閱讀第3節(尤其是有關ImageWriter
3.4節),以及第4.1節,以了解插件概念。
有關如何控制JPEG格式特定寫入設置的詳細信息,請參見JPEGImageWriteParam API文檔。
PS:不過,您的代碼看起來還不錯,並且應該提供有效的JPEG,前提是ImageIO閱讀器插件可以讀取您的初始文件( com.sun.imageio.plugins.JPEGImageReader
對於非標准文件的限制非常嚴格,即使大多數其他軟件會愉快地讀取它們)。
PPS:標准的ImageIO JPEG編寫器插件( com.sun.imageio.plugins.JPEGImageWriter
)使用獨立JPEG組(IJG) JPEG庫寫入其JPEG流。 我認為您無法獲得比這更多的“標准”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.