在ImageMagick中,如何将图像缩小到足够小,使其';裁剪到特定的尺寸?
例如,如果我有一个1600x1200的大图像,但我想生成一个250x200的缩略图(高度和宽度的不同比率)——我如何将其缩小到大小,然后对其进行中心裁剪?使用convert在一行中实现这一点吗?缩小并填充给定区域(如果需要,拉伸输出图像) 如果要缩小到250x200像素(不保持纵横比),完全填充250x200的空间(如有必要,拉伸/扭曲图像),请使用: (注意缩放几何设置后的在ImageMagick中,如何将图像缩小到足够小,使其';裁剪到特定的尺寸?,imagemagick,imagemagick-convert,Imagemagick,Imagemagick Convert,例如,如果我有一个1600x1200的大图像,但我想生成一个250x200的缩略图(高度和宽度的不同比率)——我如何将其缩小到大小,然后对其进行中心裁剪?使用convert在一行中实现这一点吗?缩小并填充给定区域(如果需要,拉伸输出图像) 如果要缩小到250x200像素(不保持纵横比),完全填充250x200的空间(如有必要,拉伸/扭曲图像),请使用: (注意缩放几何设置后的\!字符!) 将.jpeg和.png后缀替换为您拥有和想要的任何格式后缀,ImageMagick将自动处理它 按比例缩小
\!
字符!)将
.jpeg
和.png
后缀替换为您拥有和想要的任何格式后缀,ImageMagick将自动处理它
按比例缩小+将结果拟合到给定区域(并保持纵横比,如果需要,放弃部分给定区域) 如果要缩小到250x200像素以内,同时保持原始图像的纵横比(高宽比),并裁剪未用完的250x200像素的尺寸,请使用:
convert \
input.jpeg \
-scale 250x200 \
output2.png
默认情况下,-resize
参数中给出的宽度和高度是最大值(除非指定为百分比)。这意味着:输出图像将展开或收缩以适合指定的尺寸,从而保持图像的纵横比
上面的此命令“尝试”将尺寸设置为250x200:
- 当高度从原稿的1200像素缩小到200像素(到该原稿值的16.6666%)时,宽度现在为266.66像素。所以它还不适合
- 当宽度从原来的1600像素缩小到250像素(到这个原始值的15.625%)时,高度现在是187.5像素。因此,它适合现在,可以在顶部和底部留下一些空间
按比例缩小+在给定区域中居中显示结果(并使用一些背景色填充剩余空间) 如果要缩小到250x200像素以内,保持原始图像的纵横比,并通过添加一些黄色背景来创建一个以真实图像为中心的全尺寸250x200像素的图像,请使用:
convert \
input.jpeg \
-scale 250x200 \
-gravity center \
-background yellow \
-extent 250x200 \
output3.png
将背景色替换为您更喜欢的任何其他颜色,或将透明背景替换为none
(JPEG输出不支持!)
缩小比例,保持纵横比+而不裁剪到给定区域 如果要缩放到250x200像素,保持纵横比,完全填充250x200的空间(但不裁剪任何溢出),请使用: (请注意缩放几何设置后的
^
字符。^
功能需要最低版本的ImageMagick 6.3.8-2。)当使用
^
添加到-scale
或-resize
参数中修改宽度和高度时,这些设置被视为最小值,其中只有一个维度真正达到。这意味着:输出图像将展开或收缩,直到宽度或高度与其指定的尺寸匹配,从而保持图像的纵横比
上面的此命令“尝试”将尺寸设置为250x200:
- 当高度从原稿的1200像素缩小到200像素时(到该原稿值的16.6666%),即可实现所需的缩放。宽度现在是266.66像素。这是四舍五入到267像素
- 因此,最终尺寸将为267x200像素
按比例缩小,保持纵横比+并对给定区域进行裁剪 如果要缩放到250x200像素,保持纵横比,完全填充250x200的空间(从左边缘和右边缘裁剪条带),请使用:
图像的最终尺寸为250x200。与上一个命令(给出250x267结果)相比,左边缘和右边缘的一些像素列被删除。接受的答案不符合问题的要求 如果需要精确的输出尺寸(例如250x200),从原始图像拟合最大信息并裁剪冗余零件以保持纵横比,请使用以下命令:
convert input.jpg-刻度“250x200^”-重心-裁剪250x200+0+0输出。jpg
谢谢。-extent和-crop之间有什么区别?@ensnare:-crop
从图像中剪切出一个(或多个)矩形区域-extent
设置图像大小(以及,如果给定,图像偏移),如果图像被放大,未填充区域将设置为当前背景色。这两个选项都可以采用比当前图像更大或更小的尺寸,尽管这看起来有点违反直觉:“裁剪”到更大的区域,或“延伸”到更小的区域……因此两者之间没有太大的区别——除了-crop
通常需要额外的+repage
参数:(1)在裁剪之前将裁剪坐标框重新定位到当前可见图像(2)的左上角,或者在裁剪之后删除可能留下的页面偏移。在“按比例缩小以保持纵横比+并裁剪到给定区域”的示例中,-extent 250x250”是否假定为“-extent 250x200”“按比例缩小保持纵横比+按给定面积裁剪”的解决方案对我很有效。
convert \
input.jpeg \
-scale 250x200 \
-gravity center \
-background yellow \
-extent 250x200 \
output3.png
convert \
input.jpeg \
-scale '250x200^' \
output4.png
convert \
input.jpeg \
-scale '250x200^' \
-gravity center \
-extent 250x250 \
output5.png