解码JPEG以获取未压缩数据。

3
我希望解码JPEG文件并获得BMP / RGB格式的未压缩解码输出。我正在使用GNU / Linux和C / C ++。
我看过libjpeg,但似乎没有可用的良好文档。 所以我的问题是:
1. libjpeg的文档在哪里? 2. 你能推荐其他基于C的jpeg解压库吗?
5个回答

6

libjpeg的文档随源代码一起提供。如果您还没有找到它:

下载源代码压缩包并打开文件libjpeg.doc。这是一个纯ASCII文件,不是Word文档,最好在记事本或其他ASCII编辑器中打开。

还有一些其他的.doc文件。但它们大多数并不那么有趣。

很遗憾,我不能推荐除libjpeg之外的任何库。我尝试了几个替代方案,但Libjpeg总是胜出。一旦您完成了基础工作,它就非常容易使用。此外,它是目前最完整、最稳定的jpeg库。


仅为记事本启动Wine听起来很有趣 :) - quinmars
源代码包还包括图像数据编码和解码的示例代码。 - RBerteig
其他文档包含了一些关键信息,如果你要将libjpeg移植到另一个平台(如嵌入式系统),这些信息是非常重要的。它们值得浏览一次,但对于libjpeg.so的客户来说并没有太大帮助。 - RBerteig
我明白了。我下载了源代码,但可能错过了那个文件。 - Ronny Brendel
或者在线阅读此文档:http://apodeline.free.fr/DOC/libjpeg/libjpeg.html - The Student

2

2
你应该查看Qt的QImage。它有一个非常简单的接口,使这个任务变得非常容易。在每个平台上设置都很简单。
如果Qt太过复杂,你可以尝试Magick++http://www.imagemagick.org/Magick++/。它支持类似的操作,也非常适合这种类型的任务。上次我使用它时,在Windows上为它的依赖关系挣扎了一些,但在Linux上没有遇到太多麻烦。
对于Magick ++的Image类,你可能想要的函数是getConstPixels。

这次Mh不想使用Qt了 ;)(已经用了5年,得尝试点别的东西)不管怎样,谢谢你的提示。 - Ronny Brendel

1

我有一段代码,你可以复制它(或者只是用作参考),使用libjpeg库加载jpeg图像。

你可以在这里浏览代码:http://code.google.com/p/kgui/source/browse/trunk/kguiimage.cpp

只需查找LoadJPGImage函数即可。

该代码已设置为处理我的DataHandle类的c++绑定,以便加载图像,这样图像可以是文件、内存中的数据或其他任何形式。


1
一个略微不同寻常的解决方案是获取netpbm工具的副本,这些工具通过几种非常简单的中间格式将图像从几乎任何格式转换为任何其他格式。它们在shell中运行良好,并且通常在管道中使用,以读取某些任意图像,对其执行操作,然后将其写入其他格式。 pbm格式可以非常简单,只需一个纯文本ASCII头,后跟RGB数据(ASCII或二进制)。它们旨在足够简单,以便无需实现库即可使用。
JPEG在netpbm中由基于libjpeg实现的读取和写入过滤器支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接