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

我想解码JPEG文件,并获得BMP / RGB格式的未压缩解码输出。我使用的是GNU / Linux和C / C ++。

我看了一下libjpeg,但似乎没有任何好的文档可用。 所以我的问题是:

  1. libjpeg的文档在哪里?
  2. 你能build议其他基于C的jpeg解压缩库吗?

libjpeg的文档随源代码一起提供。 既然你还没有找到它:

下载源代码档案并打开文件libjpeg.doc 。 这是一个普通的ASCII文件,而不是一个单词文件,所以最好在记事本或其他ASCII编辑器中打开它。

还有一些其他的.doc文件。 他们中的大多数虽然没有那么有趣。

不幸的是我不能推荐除libjpeg以外的任何其他库。 我尝试了两种选择,但Libjpeg总是赢了。 一旦你完成了基础知识,就很容易工作。 它也是目前最完整,最稳定的jpeg库。

MagickWand是ImageMagick的C API:

http://imagemagick.org/script/magick-wand.php

我没有使用它,但文件看起来相当广泛。

你应该看看Qt的QImage。 它有一个非常简单的界面,使这个任务很容易。 每个平台的安装都非常简单。

如果Qt是矫枉过正,你可以试试Magick ++ http://www.imagemagick.org/Magick++/ 。 它支持类似的操作,也非常适合这类任务。 上次我用它的时候,我在Windows上依赖于它,但在Linux上不记得太多麻烦。

对于Magick ++的Image类,你可能想要的功能是getConstPixels。

我有代码,您可以复制(或只是用作参考)使用libjpeg库加载JPEG图像。

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

只要查找LoadJPGImage函数。

该代码被设置为处理我的DataHandle类的加载图像的c + +绑定,这样的图像可以是一个文件或数据已经在内存或任何。

一个稍微开箱的解决方案是获取netpbm工具的副本,通过几种非常简单的中间格式之一将图像从几乎任何格式转换为任何其他格式。 它们在shell中运行良好,最常用在管道中读取一些任意图像,对其执行操作,并将其写入其他格式。

pbm格式可以像简单的ASCII标头一样简单,后跟ASCII或二进制的RGB数据。 它们的目的是简单到可以使用而不需要一个库来实现。

netpbm支持通过在libjpeg之上实现的读取和写入过滤器支持JPEG。