在ImageMagick中,如何缩小图像以便将其裁剪为特定尺寸?

时间:2012-08-31 21:44:10

标签: imagemagick imagemagick-convert

例如,如果我有1600x1200的大图像,但我想生成250x200(高度和宽度的不同比例)的缩略图 - 我如何将其缩小到大小然后将其裁剪为中心?这是否可以在一行中使用convert?

1 个答案:

答案 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结果)相比,左右边缘的一些像素列被删除。