用Qt解码用Java ImageIO类编码的图像 我想用C++显示图像,更准确地使用QT框架。 已使用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(); 然后,BytErayOutPutsFipe的内容就简单地转储到文件IVI.OUT中,这是我需要转换成图像但使用C++的文件。 我看到image.jpg文件的大小大于image.out文件的大小,因此Java必须进行一些我不知道的压缩或编码。因此,我不能将图像作为JPG读取,然后将其放入QImage或QPixmap对象中
有人知道ImageIO类如何编码图像吗 有人知道ImageIO类如何编码图像吗 最好的选择可能是阅读Oracle的 它描述了用于编写的基础知识和插件机制。您至少需要阅读第3节(尤其是关于用Qt解码用Java ImageIO类编码的图像 我想用C++显示图像,更准确地使用QT框架。 已使用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(); 然后,BytErayOutPutsFipe的内容就简单地转储到文件IVI.OUT中,这是我需要转换成图像但使用C++的文件。 我看到image.jpg文件的大小大于image.out文件的大小,因此Java必须进行一些我不知道的压缩或编码。因此,我不能将图像作为JPG读取,然后将其放入QImage或QPixmap对象中,java,c++,qt,javax.imageio,Java,C++,Qt,Javax.imageio,有人知道ImageIO类如何编码图像吗 有人知道ImageIO类如何编码图像吗 最好的选择可能是阅读Oracle的 它描述了用于编写的基础知识和插件机制。您至少需要阅读第3节(尤其是关于ImageWriter)的第3.4节,也许还需要阅读第4.1节,了解插件概念的介绍 有关如何控制JPEG格式特定写入设置的详细信息,请参阅API文档 PS:您的代码看起来还可以,并且应该提供一个有效的JPEG,前提是ImageIO阅读器插件可以读取您的初始文件(对于非标准文件,com.sun.ImageIO.pl
ImageWriter
)的第3.4节,也许还需要阅读第4.1节,了解插件概念的介绍
有关如何控制JPEG格式特定写入设置的详细信息,请参阅API文档
PS:您的代码看起来还可以,并且应该提供一个有效的JPEG,前提是ImageIO阅读器插件可以读取您的初始文件(对于非标准文件,com.sun.ImageIO.plugins.JPEGImageReader
非常严格,即使大多数其他软件都乐于读取它们)
PPS:标准的ImageIO JPEG编写器插件(
com.sun.ImageIO.plugins.JPEGImageWriter
)使用JPEG库编写其JPEG流。我不认为你能得到比这更多的“标准” 你有没有试着用Qt来读它?没有。我只是尝试用GIMP和Windows图像查看器打开它,但都失败了。我认为Qt需要jpg格式的图像,而不是这种类型的编码。为什么你解码图像只是为了再次编码?为什么不在Qt中打开图像呢?或者您是否也计划在Java中添加图像处理?PS:使用ImageIO.write(…)
将使用特定于格式的默认设置对图像进行编码。如果需要更多控制,请使用ImageReader
和ImageWriter
并指定质量设置、元数据等。根据文档,它是“jpeg”,而不是“jpg”getReaderFormatNames()
应返回支持的格式列表。另外,请检查write()的返回值。@FrankOsterfeld我已经看到Oracle官方文档中使用了jpeg
和jpg
。我更喜欢jpeg
,但两者都可以工作,并且对于标准的ImageIO-jpeg插件是等效的。检查write()
的返回值很好!