例如,如果我有1600x1200的大图像,但我想生成250x200(高度和宽度的不同比例)的缩略图 - 我如何将其缩小到大小然后将其裁剪为中心?这是否可以在一行中使用convert?
答案 0 :(得分:22)
如果要缩小至250x200像素(不保持纵横比),请完全填充250x200的空间(如有必要,拉伸/扭曲图像),请使用:
convert \
input.jpeg \
-scale 250x200\! \
output1.png
(注意缩放几何设置后的\!
个字符!)
将.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像素。所以它现在适合,并且可以在顶部和底部留出一些空间。
因此最终尺寸可能是250x187或更高,250x188像素(你不能在高度上有一个像素的分数,它需要一个整数!)。
如果你想缩小到里面 250x200像素,保持原始的宽高比并创建一个全尺寸的250x200像素的图像,通过添加一些黄色将真实图像置于该空间中心背景,使用:
convert \
input.jpeg \
-scale 250x200 \
-gravity center \
-background yellow \
-extent 250x200 \
output3.png
将背景颜色替换为您喜欢的任何其他颜色,或使用none
替换为透明背景(不支持JPEG输出!)。
如果要保持纵横比缩放到250x200像素,完全填充250x200的空间(但不会裁掉任何溢出),请使用:
convert \
input.jpeg \
-scale '250x200^' \
output4.png
(请注意缩放几何设置后的^
字符。^
功能需要最小的ImageMagick版本6.3.8-2。)
通过^
或-scale
参数的-resize
添加来修改宽度和高度时,这些设置被视为最小值,其中只有其中一个尺寸确实达到了。这意味着:输出图像展开或收缩,直到宽度或高度与其指定尺寸匹配,从而保持图像的纵横比。
上面的命令“尝试”将尺寸设置为250x200:
当高度从原始的1200像素缩小到200像素(到此原始值的16.6666%)时,实现了所需的缩放。宽度现在为266.66像素。这四舍五入为267像素。
所以最终尺寸为267x200像素。
如果要保持纵横比缩放到250x200像素,完全填充250x200的空间(从左右边缘裁剪条带),请使用:
convert \
input.jpeg \
-scale '250x200^' \
-gravity center \
-extent 250x250 \
output5.png
图像的最终尺寸为250x200。与上一个命令(给出250x267结果)相比,左右边缘的一些像素列被删除。