ImageMagickのdrawで描くとき-gravityオプションの挙動がよく分からない件
ImageMagickには図形やテキストを描画する機能がいくつか用意されています。その中でdrawという機能を用いて図形やテキストを描く場合に、キャンバスの座標基準を変更したいという場合が出てきたとします。座標基準の変更には-gravityオプションが使えるのですが、その挙動がよく分からないので解説を書いておくことにしました。 初めに基礎的なところを解説していますが、必要ない方は途中から始まる本題まで読み飛ばして下さい。 基礎的な解説 ImageMagickの座標は基本的には、(x, y)座標で表すとキャンバスの左上が(0, 0)で右にいくほどxの値が増え、下にいくほどyの値が増えます。数学のグラフで見るような座標とは軸の扱いが異なるため、初めて座標を意識した場合には疑問に思う場合はあるかと思います。 ImageMagickに限らず、2D描画、3D描画の世界では様々な座標の取り方があり、ソフトによってどのような扱いがされるかはまちまちだったりします。高度なものは理解するのが困難なものもありますが、基本的には座標の違いは軸の方向くらいなものなのでそう難しく考える必要はありません。とりあえずは違いがあるってことだけ認識しておけばいいでしょう。 初めに触れたようにImageMagickにはdraw以外にもテキストなどを描画する機能があります。textやannotateという機能、また座標ということになるとその他の画像の合成や変形に関する機能も関連してきます。しかし全部について解説するのはめんどう過ぎるため、今回はdraw機能についてだけ触れることにします。あっちこっちに話が飛ぶと、ただでさえ機能が多いImageMagickの話が無駄にややこしく感じるだけなので。 さてdrawを用いる場合には、座標は-gravityオプションで変更することが出来ます。コマンドラインから $ convert -list gravity とすると、ImageMagickではどのような設定が使えるかが表示されます。設定は「Center」以外は方角で表されているでしょう。「North」や「SouthWest」など。-gravityオプションでその方角のどれかを指定すると、その方角の位置が(0, 0)になります。ただし指定する方角によっては軸の方向(どっちがプラスでどっち