4

我目前正在使用jpeglib-turbo库在 C++ 中实现 jpeg resizer。

使用该库进行 JPEG 解压缩和重新压缩的目标是 100 毫秒。使用推荐的优化设置(记录在 jpeglib-turbo usage.txt 中)我能想到的最好的设置大约是 320 毫秒,所以我想知道 100 毫秒是否可能/现实?这会将 3000x4000 像素的图像从大约 6Mb 的大小解压缩/重新压缩到 130Kb。

我用于快速解压的代码是:

    dinfo.dct_method = JDCT_IFAST;
    dinfo.do_fancy_upsampling = FALSE;
    dinfo.two_pass_quantize = FALSE;
    dinfo.dither_mode = JDITHER_ORDERED;
    dinfo.scale_num = 1/8;
4

1 回答 1

4

感谢您的回答。

实际上可以在 100ms 左右解压和重新压缩。在联系了 libjpeg-turbo 的作者后,他告诉我我使用的 dinfo.scale_num 属性是错误的。此属性是比例分子- 我还需要设置scale_denom(分母)属性。

所以好的代码是:

 dinfo.dct_method = JDCT_IFAST;
 dinfo.do_fancy_upsampling = FALSE;
 dinfo.two_pass_quantize = FALSE;
 dinfo.dither_mode = JDITHER_ORDERED;
 dinfo.scale_num = 1;
 dinfo.scale_denom = 8;

我希望代码如此之快,因为图像缩放对于用户来说应该是难以察觉的,因为它位于速度/用户体验是最重要的客户端应用程序中。

于 2012-05-29T09:28:28.500 回答