Saturday, February 16, 2008

ImageMagickとWSHで、角が丸くなったバッジ画像を生成する

角が丸くなったバッジ画像を生成するには、以下のVBScriptを実行します。

(sample311.vbs)
=============================================================
Set im = CreateObject("ImageMagickObject.MagickImage.1")
pi=3.14159

rem 分割数
par = Wscript.Arguments(0)
rem 中心x
cx = Wscript.Arguments(1)
rem 中心y
cy = Wscript.Arguments(2)
rem 半径(大)
rad1 = Wscript.Arguments(3)
rem 半径(小)
rad2 = Wscript.Arguments(4)
rem 描画色
fc = Wscript.Arguments(5)
rem 出力サイズx
ox = Wscript.Arguments(6)
rem 出力サイズy
oy = Wscript.Arguments(7)
rem 出力ファイル名
ofile = Wscript.Arguments(8)

dr1=0
dr2=360/(par*2)
dat="stroke-linejoin round polygon "
Do While dr2<360 p1x="int(cx-cos(2*pi*dr1/360)*rad1)" p1y="int(cy-sin(2*pi*dr1/360)*rad1)" p2x="int(cx-cos(2*pi*dr2/360)*rad2)" p2y="int(cy-sin(2*pi*dr2/360)*rad2)">0 then
dat=dat+","
end if

dat=dat & cstr(p1x) & "," & cstr(p1y) & "," & cstr(p2x) & "," & cstr(p2y)

dr1 = dr1 + 360/par
dr2 = dr2 + 360/par
Loop

im.Convert "-size", ox & "x" & oy, "xc:none", "-fill", fc, "-stroke", fc, "-strokewidth", "4", "-draw", dat, ofile

Set im = Nothing
=============================================================

実行例
cscript sample311.vbs 36 100 100 90 80 #BBDDFF 200 200 sample311.png

出力画像(sample311.png)


stroke-linejoin roundにより、polygonで書かれたバッジの角が丸くなっています。

関連項目
ImageMagickとWSHで、バッジ画像を生成する

No comments: