libjpeg输出缩放



libjpeg允许/有例程缩放输出图像吗?

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

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

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

使用scale_num和scale_dom为解压缩对象提供缩放分子和分母。参见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。但实际上,可以使用库来实现。

最新更新