用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:标准的ImageIOJPEG编写器插件(com.sun.imageio.plugins.JPEGImageWriter
)使用独立JPEG组(IJG)JPEG库来编写其JPEG流。我不认为你能得到比这更"标准"的东西。
相关文章:
- Base64 图像编码不正确
- 当通过tcp接收编码图像的消息时,zmq在第二个循环中崩溃
- 如何将 MATLAB 图像处理库内置函数转换为 MATLAB 编码器代码生成不支持的 C++?
- 如何将硬编码图像加载到 OpenGL 纹理中
- 将原始视频图像转换为VPX编码器的I420
- 将 JPG 编码数组从 ROS sensor_msgs/压缩图像保存到 roscpp 中的文件
- BASE64图像文件用C 编码
- FFMPEG H264对每个图像进行编码
- OpenCV 如何为imencode编码原始图像信息
- 如何使用Imebra库将压缩像素(用我自己的编码器压缩)回到DICOM图像文件中
- 在FLTK中显示Base64编码图像
- 同一图像的不同 base64 编码
- JPEG编码位图(BMP)图像从文件使用libjpeg / C++
- Windows媒体基础使用原始图像对视频进行编码
- 用Qt解码用Java ImageIO类编码的图像
- C++图像编码/解码库
- 如何根据C++程序中生成的多个图像对视频进行编码,而不将单独的帧图像写入磁盘
- 用c++将数组编码为jpeg图像
- H264视频中的编码图像被跳过和/或丢失
- 在Cocos2d-x中加载Base64编码图像