我发现了多种使用更改图像分辨率的方法convert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
这些有什么区别?
如果我需要以固定的宽高比制作各种尺寸的大图片缩略图(需要裁剪)-我的最佳选择是什么?
我发现了多种使用更改图像分辨率的方法convert
:
-sample
-resample
-scale
-resize
-adaptive-resize
-thumbnail
这些有什么区别?
如果我需要以固定的宽高比制作各种尺寸的大图片缩略图(需要裁剪)-我的最佳选择是什么?
Answers:
调整大小
-resize 400x300+20+30
(如下面的-scale
和-sample
示例一样)将输入转换为像素尺寸为的输出图像400x300
。它还将输出向右移动20个像素,向底部移动30个像素。此外,还有一些其他差异-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
),像素使用非常简单的算法进行子采样:只需跳过一些行和列。
的geometry参数-sample
不支持任何偏移量部分(与不同-resize
,后者尊重输出的偏移量指令)。
输出将永远不会有比输入图像更多(不同)的颜色。虽然颜色可能较少。
因此,-sample
速度非常快(比-resize
)快-但输出质量(通常)较差:您很容易在结果输出中获得极端的阻塞和混叠效果。
的一个重要功能-sample
是,尽管原始图像中的某些颜色可能会消失,但是新图像将不包含任何新颜色。
重采样
-resample
使用所需XxY
分辨率而不是目标图像的XxY
像素几何作为参数。该运算符的目的是保留图像的渲染大小:假定在以300 DPI渲染的设备上,图像的尺寸为4英寸乘3英寸。然后要求-resample 72
或-resample 72x72
将调整图像大小,以使其在72 DPI设备上再次测量(4英寸乘3英寸)。
此操作仅适用于已在其元数据中存储了所需分辨率的此类图像(并非所有图像格式都支持图像分辨率的概念-JPEG,PNG和TIFF都支持)。
如果源图像是在用于图像分辨率内部支撑缺少格式,则图像的(假设的)原始分辨率必须通过指定-density
在命令行上之前,以指定-resample
的分辨率。
规模
-scale 400x300
产生与使用相同的结果(但速度更快,因为它避免了所有过滤处理)-filter box -resize 400x300
。它还完全忽略任何当前-filter
设置。
缩小时,只需将各个输入像素颜色平均在一起即可替换像素颜色,从而更改图像大小。
放大时,它只复制所需的其他像素的相应输入像素。
自适应调整大小
-adaptive-resize 400x300
不支持(或忽略,如果设置)几何参数的偏移部分,并且也忽略设置(如果存在)。-gravity
-filter [something]
)。缩图
-thumbnail
的工作原理-resize
与之相似,但有一些区别:
它针对速度进行了优化。
它还会删除所有嵌入的颜色配置文件,以减小缩略图的文件大小。
以下答案显示了该-resize
指令的一些示例(已说明!)。每个插图都显示不同的结果,具体取决于精确调整大小方法的“详细信息”: