Saturday, May 17, 2008

ImageMagickで、透過PNGの切り抜き画像からシールっぽい画像を生成する

透過PNGの切り抜き画像からシールっぽい画像を生成するには、以下のバッチファイルを実行します。

rem 環境によって変えてね
set im=C:\Progra~1\ImageMagick-6.4.1-Q16
%im%\convert.exe -size 120x120 xc:black sample2.png -gravity center -composite -threshold 20%% -blur 0x10 sample421a.png
%im%\convert.exe sample421a.png -threshold 18%% -transparent black -fill #a0a0a0 -opaque white ( sample421a.png -threshold 21%% -fill #ffffe0 -opaque white -transparent black ) -composite sample2.png -gravity center -composite sample421b.png
%im%\convert.exe -size 120x120 xc:#f1ede1 sample421b.png ( +clone -background #000000 -shadow 70x2+3+3 ) -swap 1,2 -mosaic sample421c.png

上記のバッチファイルでは、以下の処理を実行しています。
1. 元画像の透過PNGにちょっと大き目の黒背景を重ね合わせて2値化し(-threshold 20%%)、ぼかし(-blur 0x10)をかけます。

元画像(sample2.png:100x100ピクセル)


出力画像(sample421a.png)


2.処理1の出力画像(sample421a.png)を閾値18%で二値化し、白色部分は#a0a0a0に塗り替え、黒色部分は透明にします。これで、縁取りの部分の領域を作成します。次に、処理1の出力画像を今度は閾値21%で二値化し、白色部分を#ffffe0に、黒色部分は透明にします。元画像を読み込んで、画像を重ね合わせると、以下の画像になります。

出力画像(sample421b.png)


3.最後に、背景画像(#f1ede1)と、影、処理2の出力画像(sample421b.png)を重ね合わせると、以下の画像になります。

出力画像(sample421c.png)


関連項目
ImageMagickで、透過PNG画像に半透明の縁取りをつける

No comments: