imagick::INTERLACE_JPEG/INTERLACE_PLANE/INTERLACE_LINE 之间的实际区别是什么?

What's the practical differences between imagick::INTERLACE_JPEG/INTERLACE_PLANE/INTERLACE_LINE?

ImageMagick 中有很多 "interlace" 选项,但我不太明白其中的区别。标题中的所有选项似乎都生成了一个可比较的 JPG 文件 - 也许如果我有一个 slower/throttled 连接,我可以看出不同之处。

有什么实际区别吗?应该选择其中之一吗?

谢谢

没有区别。下面是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" 格式请求渐进式输出。