libjpeg输出缩放

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

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

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

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

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

与解码整个图像然后缩小尺寸相比,这更快,并且可能具有更高的质量。

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

更多相关信息 ,请点击此处 。

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

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

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