在ImageMagick转换中,样本/重新采样/缩放/调整大小/自适应调整大小/缩略图操作符有何区别?

96

我找到了多种使用 convert 改变图像分辨率的方法:

-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail

它们之间有什么区别?

如果我需要制作各种大小的大图片缩略图,并保持固定的长宽比(需要裁剪)-- 我最好选择哪个?


3
这个链接 - ImageMagick v6 Examples -- Resize or Scaling 应该会对你有所帮助。 - Harvey
如需更多信息,请参见https://imagemagick.org/Usage/filter/ 和 https://imagemagick.org/Usage/filter/nicolas/。 - fmw42
1个回答

159

调整大小

-resize 400x300+20+30(与下面的-scale-sample示例类似)将输入转换为输出图像,其像素尺寸为400x300。它还将输出向右移动20像素并向下移动30像素。此外,-resize-scale还有一些其他区别:

  • -resize支持额外的-filter设置(应在命令行中在使用-resize之前!)。

  • -filter确定放大时添加的像素颜色或缩小时移除某些邻域像素的剩余像素所使用的确切算法。

  • 要查看支持的滤镜列表,请运行convert -list filter

  • -filter point -resize 400x300生成与-sample 400x300完全相同的结果,但速度稍慢。

  • 如果不与-resize一起设置,则转换会默认为-filter Lanczos,这会比-filter point生成更好的质量(因为它考虑了所有周围像素的颜色来确定任何新添加的像素的颜色),但速度较慢。

采样

-sample 400x300将输入图像转换为具有像素尺寸为400x300的输出图像。然而,与-resize相比,有一些非常重要的区别:

  • -sample不支持额外的-filter设置;如果被设置了,那么-filter会被忽略。

  • 当放大图片(因为输入图像大小可能小于400x300)时,像素会在块中复制。

  • 当缩小图片(因为输入图像大小可能大于400x300)时,像素会被简单的下采样算法进行子采样:一些行和列直接被跳过。

  • -samplegeometry参数不支持任何offset部分(不像-resize,后者会尊重输出的offset指令)。

  • 输出的颜色数量永远不会比输入图像多;但可能会有更少的颜色。

  • 因此,-sample非常快速(比-resize更快)--但输出质量通常较差:您很容易在结果的输出中获得极端的阻塞混叠效果。

  • -sample的一个重要特征是新图像不会包含任何新颜色,尽管原始图像中的一些颜色可能会消失。

重新采样

-resample操作使用参数指定所需的XxY 分辨率,而不是目标图像的XxY像素几何形状。该操作的目的是保留图像的呈现大小:假设您的图像在一个以300 DPI渲染它的设备上测量为4英寸乘以3英寸。然后请求-resample 72-resample 72x72将调整图像的大小,使得在一个72 DPI的设备上它再次测量出4英寸乘以3英寸。

  • 此操作仅适用于元数据中已经存储了所需分辨率的图像(并非所有图像格式都支持图像分辨率的概念——JPEG、PNG和TIFF支持)。

  • 如果源图像的格式缺少对图像分辨率的内部支持,则必须通过命令行中的-density在指定-resample分辨率之前指定图像的(假定)原始分辨率。

scale

-scale 400x300产生与使用-filter box -resize 400x300相同的结果(但更快,因为它避免了所有的过滤器处理)。它还完全忽略任何当前的-filter设置。

  • 缩小图像时,它仅通过将相应的输入像素颜色平均在一起来改变图像大小。

  • 放大图像时,它只是复制所需的额外像素所对应的输入像素。

adaptive-resize

-adaptive-resize 400x300 不支持(或忽略)几何体参数的偏移量部分,并且如果存在,也会忽略-gravity设置。

  • 当调整大小时,默认情况下使用数据相关三角剖分 (除非通过另外指定-filter [something]来覆盖调整大小方法)。

缩略图

-thumbnail 的工作方式与-resize类似,但有一些不同之处:

  • 它被优化为速度。

  • 它还会删除任何嵌入的色彩配置文件以减小缩略图的文件大小。


以下答案展示了-resize指令的一些(有插图!)示例。每个示例都显示了不同的结果,具体取决于确切的调整大小方法的“细节”:


5
谢谢,这比ImageMagick文档更容易理解。 - Paul Brannan
如果您有示例图像,那就更完美了 :-) - Ciro Santilli OurBigBook.com
1
@KurtPfeifle:首先,非常感谢您提供的高度信息化的答案。请问您能否推荐一本好书或者Imagemagick的文档PDF呢?目前我最好的方法是爬取所有Imagemagick页面以减少阅读时间,但这是大量的信息(在我看来,并不总是足够描述)。非常感谢您的帮助。 - saurabheights
我知道已经有一段时间了,但我只是想让你知道这个答案有多有用。你知道最近版本的ImageMagick是否有任何更改吗? - Eli Richardson

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