ImageMagickでベクタ画像を綺麗な半透過PNGにする

ImageMagickで以下のようなことをやる機会があったのでメモ。 今回は元画像がIllustratorファイルだったが、 他のベクタ形式の画像からでも背景透過PNGを作成するときに使えると思う。

  • 元データはIllustratorファイル(.ai)
  • 元の画像の余白部は削除する
  • 220x110の長方形に入るようにリサイズ
  • 上下左右に余白をつける
  • 出来上がりの画像サイズは230x180
  • 背景は透過させる(きれいに透過させたい)

コマンド

convert -colorspace sRGB -density 576 -filter Point "元ファイル.ai" -trim -alpha set -fill '#000000ff' -opaque '#ffffff' -background transparent +filter -resize 220x110 -gravity center -extent 230x180 出力ファイル.png

説明

アンチエイリアスを切った状態で透過色を設定し、その後アンチエイリアスをONにして縮小するところがミソ。 これで中間色の部分をきれいに半透過にできる。

オプション 説明
-colorspace sRGB カラースペースをsRGBに設定
-density 576 出力されるPNGファイルの解像度が72dpiだったので、その8倍で読み込むよう設定
-filter Point アンチエイリアスをOFFに設定
"元ファイル.ai" 画像ファイルを読み込む
-trim 元画像の余白を削除
-alpha set -fill '#000000ff' -opaque '#ffffff' 白(#ffffff)を透過に指定
-background transparent 出力画像の背景を透明に設定
+filter リサイズする時はアンチエイリアスON(上で設定された-filter Pointを無効化)
-resize 220x110 最大サイズを220x110に縮小
-gravity center -extent 230x180 画像中央を中心に上下左右に余白を作って230x180にする
出力ファイル.png 出力ファイル形式はPNG