我找到了多种使用 convert
改变图像分辨率的方法:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
它们之间有什么区别?
如果我需要制作各种大小的大图片缩略图,并保持固定的长宽比(需要裁剪)-- 我最好选择哪个?
我找到了多种使用 convert
改变图像分辨率的方法:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
它们之间有什么区别?
如果我需要制作各种大小的大图片缩略图,并保持固定的长宽比(需要裁剪)-- 我最好选择哪个?
调整大小
-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
)时,像素会被简单的下采样算法进行子采样:一些行和列直接被跳过。
-sample
的geometry参数不支持任何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
指令的一些(有插图!)示例。每个示例都显示了不同的结果,具体取决于确切的调整大小方法的“细节”:
ImageMagick
是否有任何更改吗? - Eli Richardson