もた日記

くだらないことを真面目にやる

三角形、円などの基本図形で画像を描画するツール「primitive」

primitive


primitiveというツールを使うと三角形、長方形、楕円、円などの基本図形で画像を描画することができる。
インストールするには下記コマンドを実行(Goが必要)。

$ go get -u github.com/fogleman/primitive


使い方


$ primitive --help
Usage of primitive:
  -a=128: alpha value
  -i="": input image path
  -m=1: 0=combo 1=triangle 2=rect 3=ellipse 4=circle 5=rotatedrect
  -n=0: number of primitives
  -o="": output image path
  -r=256: resize large input images to this size
  -s=1024: output image size
  -v=false: verbose
  -vv=false: very verbose

-iに入力画像ファイル、-oに出力画像ファイルを指定する。
-mに使用する基本図形(0 : 組み合わせ、1 : 三角形、2 : 長方形、3 : 楕円、4 : 円、5 : 回転した長方形)を、-nに使用する図形の数を指定する。
色々なパターンで実行した結果は以下の通り。

オリジナル画像

f:id:wonder-wall:20160921222129p:plain

三角形を100個

$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 1 -s 512

f:id:wonder-wall:20160921223438p:plain

円を100個

$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 4 -s 512

f:id:wonder-wall:20160921223538p:plain

基本図形の組み合わせを100個

$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 0 -s 512

f:id:wonder-wall:20160921223833p:plain

三角形を500個

$ primitive -i /tmp/owl.png -o /tmp/output.png -n 500 -m 1 -s 512

f:id:wonder-wall:20160921224808p:plain

出力画像フォーマット


出力画像フォーマットは

に対応している。
例えば、出力ファイル名の拡張子を.gifにすればGIFアニメーションで出力される(ImageMagickconvertコマンドが必要)。画像は20回の繰り返しの例。

f:id:wonder-wall:20160921233430g:plain

画像サイズによっては処理に時間がかかるので、その場合は-vオプションを指定して進捗を表示するのがよい。

$ primitive -i /tmp/owl.png -o /tmp/output.gif -n 20 -m 1 -s 512 -v
reading /tmp/owl.png
iteration 1, time 4.494, score 0.169830
iteration 2, time 8.972, score 0.156139
iteration 3, time 11.181, score 0.149047
iteration 4, time 15.224, score 0.143894
iteration 5, time 18.997, score 0.138046
 …