imagick :: INTERLACE_JPEG / INTERLACE_PLANE / INTERLACE_LINE之间的实际差异是什么?

时间:2016-04-05 11:07:05

标签: php imagemagick imagick

ImageMagick中有很多“隔行扫描”选项,但我真的不明白其中的区别。标题中的所有选项似乎都会生成一个类似的JPG文件 - 如果我有一个较慢/受限制的连接,我可以辨别出差异。

有什么实际区别吗?应该选择一个吗?

由于

1 个答案:

答案 0 :(得分:5)

没有区别。这是ImageMagick的jpeg中的相关代码 编码器:

#if (JPEG_LIB_VERSION >= 61) && defined(C_PROGRESSIVE_SUPPORTED)
  if ((LocaleCompare(image_info->magick,"PJPEG") == 0) ||
      (image_info->interlace != NoInterlace))
    {
      if (image->debug != MagickFalse)
        (void) LogMagickEvent(CoderEvent,GetMagickModule(),
          "Interlace: progressive");
      jpeg_simple_progression(&jpeg_info);
    }
  else
    if (image->debug != MagickFalse)
      (void) LogMagickEvent(CoderEvent,GetMagickModule(),
        "Interlace: non-progressive");
#else
  if (image->debug != MagickFalse)
    (void) LogMagickEvent(CoderEvent,GetMagickModule(),
      "Interlace: nonprogressive");
#endif

也就是说,如果支持渐进式JPEG并且隔行扫描不是NoInterlace,则无论您请求什么样的隔行扫描,它都会写入渐进式JPEG。正如您在引用代码的第二行中所看到的,您还可以使用“PJPEG”扩展或“PJPEG”格式请求渐进式输出。