web-dev-qa-db-ja.com

ImageMagickは透明な背景でキャンバスを拡張します

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

入力が50x50の場合、周囲の背景は白になります。入力内の色を透明として宣言せずに、これを何らかの方法で透明に設定できますか?

49
Toby

代わりにこれを使用してください:

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

注:パラメータの順序は重要です! (自分を納得させるには、-background none開始の代わりにパラメータの最後に...)


更新:最初に提供したコマンドラインが意図したとおりに機能しないことに気付いた@jesmithに感謝します。より最近のバージョンのconvertでは、さらに-gravity centerが呼び出されますbefore-extent 100x100。 (これはImageMagickの最新バージョンに導入された変更の1つです([この回答を最初に作成した時点で]))。

89
Kurt Pfeifle

カートのノートは皮肉なことにスポットされており、順序は非常に重要です。カートのコマンドの結果、gravityextentに適用されないため、透明な「境界線」はすべて画像の下部または右側に配置されます。

gravityextentの前に移動すると、該当するすべての面に等しい透明な「境界線」が正しく作成されます。

input.jpg -background none -gravity Center -extent 100x50 output.pngに変換します

8
eprothro