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

时间:2009-06-17 19:33:22

标签: c++ c linux jpeg decode

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

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

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

5 个答案:

答案 0 :(得分:6)

libjpeg的文档附带了源代码。既然你还没有找到它:

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

还有一些其他的.doc文件。其中大多数都不是那么有趣。

不幸的是我不能推荐除libjpeg之外的任何其他库。我尝试了几种替代品,但Libjpeg总是赢了。一旦完成基本操作,就很容易使用了。它也是最完整,最稳定的jpeg库。

答案 1 :(得分:2)

MagickWand是ImageMagick的C API:

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

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

答案 2 :(得分:2)

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

如果Qt过度,你可以尝试Magick ++ http://www.imagemagick.org/Magick++/。它支持类似的操作,也非常适合这类任务。我最后一次使用它时,我在Windows上遇到了依赖性问题,但在Linux上没有多少麻烦。

对于Magick ++的Image类,您可能需要的函数是getConstPixels。

答案 3 :(得分:1)

我有一些代码可以复制(或仅用作参考)来使用libjpeg库加载jpeg图像。

您可以在此处浏览代码:http://code.google.com/p/kgui/source/browse/trunk/kguiimage.cpp

只需查看功能 LoadJPGImage

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

答案 4 :(得分:1)

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

pbm格式可以像普通的ASCII标头一样简单,后跟ASCII或二进制的RGB数据。它们的设计非常简单,无需使用库来实现。

netpbm支持JPEG,它是在libjpeg之上实现的读写过滤器。