Sunday, November 26, 2006

ImageMagickで飾り付き円または星型の描画

ImageMagickで飾り付き円または星型の描画は、
以下のようなpythonスクリプトでデータを作成して、
(エラー・例外処理は一切していない手抜きです。。。)
描画することでもできます。


import cmath

par=input("partition:")

rad1=input("radius1(large):")

rad2=input("radius2(small):")

dr1=0

dr2=360/(par*2)

dat="polygon "

while dr2<360: p1x="int(abs(rad1-cmath.cos(2*cmath.pi*(dr1+90)/360)*rad1))" p1y="int(abs(rad1-cmath.sin(2*cmath.pi*(dr1+90)/360)*rad1))" p2x="int(abs(rad1-cmath.cos(2*cmath.pi*(dr2+90)/360)*rad2))" p2y="int(abs(rad1-cmath.sin(2*cmath.pi*(dr2+90)/360)*rad2))" dat="dat+" dat="dat+" dr1 =" dr1" dr2 =" dr2" fd =" file('dc.txt','w')">>fd,dat

fd.close()



パラメータとして、分割数(partition)64、半径1(radius1)100、半径2(radius2)90を
指定するとdc.txtに座標データが出力されます。
>python decorated-circle.py
partition:64
radius1(large):100
radius2(small):90

そして以下のコマンドを実行すると
set im=C:\Progra~1\ImageMagick-6.3.0-Q16
%im%\convert.exe -size 200x200 xc:#635854 -fill #c0b49d -draw @dc.txt sample10.jpg

ぎざぎざの飾り付き円が描画できます。(sample10.jpg)




ちなみにパラメータとして、以下の値を与えると、
>python decorated-circle.py
partition:5
radius1(large):100
radius2(small):30
星型の図形が描画できます。(star.jpg)