libjpeg输出缩放

时间:2011-09-20 15:52:07

标签: c libjpeg

libjpeg是否允许/让例程缩放输出图像?

我有一个图像需要在保存和加载时调整大小,在输入上提供width1,height1并在输出上获取width2,height2,我真的不能使用任何外部。

2 个答案:

答案 0 :(得分:11)

是的,libjpeg确实支持图像缩放,但有一些限制。

Libjpeg版本8c及更高版本支持M/8 scaling,其中M是1到16之间的整数。更常用的libjpeg版本6b仅支持1,2,2和8的M(即2的幂)按比例缩小)。

使用scale_num和scale_denom将缩放分子和分母提供给解压缩对象。请参阅jpeglib.h中的jpeg_decompress_struct。您可以参考djpeg.c以获取用法示例。

这比解码整个图像然后降尺度要快得多,而且质量可能更高。

答案 1 :(得分:1)

不,你需要自己缩放它(线性插值是最简单和最快但是给出方形像素,双线性/三线性/双三次是技巧但是给出更平滑的结果),或者使用一个可以做脏的库为你工作(检查OpenCV,SDL,imagemagick,libpipi等)

有关此herehere的更多信息。

简单最近邻插值的实际代码(未优化):

dest[dx+dy*dest_width] = src[(dx*src_width/dest_width)+(dy*src_height/dest_height)*src_width]

根据dest_width和dest_height迭代dx和dy。但实际上,请使用库。