libjpeg输出缩放

3

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

当保存和加载图像时,我需要调整大小的图像,提供输入宽度1、高度1并获得输出宽度2、高度2,我确实不能使用任何外部工具。

2个回答

14

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

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

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

这比解码整个图像然后进行缩小要快得多,并且潜在地更高质量。


由于缩放是在感知空间而不是线性光中进行的,这将导致阴影扩展和高光消失。 - Lilith River

1

不,你需要自己进行缩放(线性插值是最简单和最快的方法,但会产生方形像素,双线性/三线性/双三次插值更加复杂,但可以得到更平滑的结果),或者使用一个库来为你完成这项工作(检查OpenCV、SDL、imagemagick、libpipi等)。

更多信息请点击这里这里

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

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

只需根据目标宽度和高度迭代dx和dy。但是,实际上最好使用库来完成此操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接