簡體   English   中英

使用Qt解碼使用Java ImageIO類編碼的圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM