三角形、円などの基本図形で画像を描画するツール「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
に使用する図形の数を指定する。
色々なパターンで実行した結果は以下の通り。
オリジナル画像
三角形を100個
$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 1 -s 512
円を100個
$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 4 -s 512
基本図形の組み合わせを100個
$ primitive -i /tmp/owl.png -o /tmp/output.png -n 100 -m 0 -s 512
三角形を500個
$ primitive -i /tmp/owl.png -o /tmp/output.png -n 500 -m 1 -s 512
出力画像フォーマット
出力画像フォーマットは
に対応している。
例えば、出力ファイル名の拡張子を.gif
にすればGIFアニメーションで出力される(ImageMagickのconvert
コマンドが必要)。画像は20回の繰り返しの例。
画像サイズによっては処理に時間がかかるので、その場合は-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 …