62
convert input.png -extent 100x100 -gravity center -background white output.png

如果输入为 50x50,则周围的背景为白色。我可以以某种方式将其设置为透明而不将输入中的任何颜色声明为透明吗?

4

2 回答 2

119

改用这个:

convert               \
      input.png       \
     -background none \
     -gravity center  \
     -extent 100x100  \
      output.png

注意:参数的顺序很重要!(为了说服自己,只需将-background none参数放在末尾而不是开头...)


更新:感谢@jesmith,他注意到我最初提供的命令行不再按预期工作。较新的版本convert还需要在之前-gravity center调用。(这是对 ImageMagick 的最新版本 [在最初编写此答案时] 引入的更改之一)。 -extent 100x100

于 2012-08-29T21:25:30.017 回答
10

具有讽刺意味的是,Kurt 的注释恰到好处,顺序非常重要。Kurt 的命令导致gravity不应用于extent,因此透明的“边框”将全部位于图像的底部和/或右侧。

前移将正确地gravityextent所有适用的边上创建相同的透明“边界”。

转换 input.jpg -background none -gravity Center -extent 100x50 output.png

于 2014-01-31T15:05:24.943 回答