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" 格式请求渐进式输出。
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" 格式请求渐进式输出。