如何在纯C中将RGB缓冲区转换(编码)为JPEG?

时间:2010-09-23 22:35:07

标签: c jpeg rgb encode

我希望我能以这种方式使用某种类型的库:

int* buffer[720*480]; // read in from file/memory/network stream
raw_params params;
params.depth = 16;
params.width = 720;
params.height = 480;
params.map = "rgb";
params.interleave = JPEG_RAW_INTERLEAVE_OFF;

jpeg_encode(buffer, params)

但我似乎无法找到它。

澄清

我正在寻找一个如何使用这样一个库的简单示例。与netpbmmagick的来源一样健壮的代码对我的理解水平而言过于复杂。

3 个答案:

答案 0 :(得分:3)

是的,这里有一个图书馆(幸运的是!):http://freshmeat.net/projects/libjpeg/等于(?)到http://sourceforge.net/projects/libjpeg/

答案 1 :(得分:3)

来自Independent JPEG Group的libjpeg库是JPEG标准的参考实现,由参与创建标准的人员编写。它坚固,稳定,便于携带。

它是一个源工具包,其中包含大量文档和示例。

源图像的首选表示形式是像素数组的数组指针,而不是您所显示的单个单片数组。但是,您可以轻松地创建指向行的指针数组来处理图像缓冲区。

它具有高度可配置性和可扩展性。具体来说,它允许通过回调配置数据源和目标。这为首次使用增加了一些复杂性,但并不是很难处理。

当然也有商业图书馆,我知道有商业上可用的IP用于在硬件中实现JPEG。商业图书馆可能会更快,但永远不会便宜。

答案 2 :(得分:1)

这是一个相当简单的例子,它被复制到网上的许多地方:

此文档的特定页面与理解需求结构相关: