[応用編] Imagemagickを使ってテキスタイルパターンを作る
-tile -roll -append -clone -swap -write mpr:
今回は応用編その2としまして、Imagemagickの -tile オプションを使って、アパレルのテキスタイルパターンであるような規則性のあるパターンを作ってみたいと思います。
元画像として↓こちらの花のイラストを背景透過PNG (200 x 200 pixel) にしたものを用意しました。
flower.png
ではまずこちらを使って、単純に -tileオプションを使用してみます。
1. 単純に -tile を使ってみる
convert -size 1000x1000 tile:flower.png exit.jpg
(実行結果)
はい。色々と問題が発生していますね。。汗
とりあえず200×200ピクセルの画像を、1000×1000ピクセルで-tileを適用したので、5×5列のパターン化には成功しています。
ですが、隙間がないので窮屈なパターンになってしまっているのと、何よりPNG合成の際の背景黒くなる問題が発生しています。
というわけで、これを徐々にブラッシュアップしていきます。
2. 隙間を作る・背景色をなんとかする
背景色は-tile実行時に黒くなるようですので、-tileオプション実行前に背景色を当てたJPEG画像に変換しておこうと思います。
そして同様に元画像を-tileオプションの前に縮小することにより、窮屈なパターンにならないように調整してみます。
まずその部分だけを記述してみます。
convert \( flower.png -resize 60% \) \( -size 200x200 xc:#BBFFFF \) +swap -gravity center -compose over -composite exit.jpg
(実行結果)
はい、こんな感じで背景色は花の色に合いそうな、薄いブルーにしてみました。
サイズは60%に縮小したので、少し周辺に余裕が出来た感じです。
実行内容を簡単に解説すると、元画像を60%に縮小しつつ、200×200ピクセルの薄いブルーの背景画像を作成し、+swapで画像の順番入れ替えて花が上にくるようにしてから、センターに画像合成という流れです。
-swapは画像の重なる順番を入れ替えるオプションで、合成の際に非常によく使うので覚えておくといいかと思います。
+swapと書くことで、2つの画像の順番を入れ替えることができます。
ではこれで、-tileオプションを実行してみたいと思います。
convert \( flower.png -resize 60% \) \( -size 200x200 xc:#BBFFFF \) +swap -gravity center -compose over -composite -write mpr:TILE +delete -size 1000x1000 tile:mpr:TILE exit.jpg
(実行結果)
はい。こんな感じでわりとイイ感じに合成できました。
では実行内容を解説していきます。
-compositeまでは、先に記したとおりです。
次の-writeオプションは、
-write [filename]
で、ここまでの実行結果画像を指定のファイル名で書き出すオプションです。
後に処理が続く場合は、引き続き処理が実行されるので、画像の途中経過を見たい時などに使えます。
ここではファイル名を mpr:TILE としています。
この mpr: というのは、Memory Program Register の略で、Imagemagickに用意されている特殊フォーマットの一つです。
mpr: [filename]
と書くことで、ここまでの実行結果画像を指定のファイル名で、メモリ内に保存してくれます。
ここではTILEという名前で保存したので、後で -tile を実行するときに もう一度 mpr:TILE と書くことでその画像を読み出しています。
なお、mpr: でメモリ内に保存した後には、 +delete でそこまでの実行内容をすべて破棄しましょう。
こういった特殊フォーマットは他にも幾つかあり、実行内容が長く複雑になってくるときに結構役立つものが多いです。
時間があったら、今度まとめてみようと思います。多分。
3.更にもう一工夫。イイ感じのパターンにする
ここまでのパターンでもまあ悪くはないのですが、よく見かけるパターンとかってルイヴィトンとかもそうですが、列ごとに互い違いな感じで組まれていますよね。
ということで一歩進んで、そういう感じを目指してみたいと思います。
convert \( flower.png -resize 60% \) \( -size 200x200 xc:#BBFFFF \) +swap -gravity center -compose over -composite \( -clone 0 -roll +0+100 \) +append -write mpr:TILE +delete -size 1000x1000 tile:mpr:TILE exit.jpg
(実行結果)
はい。こんな感じで互い違いに組み合わさったパターンが完成しました。
実行内容は、-composite 以前と、-write以降は一緒です。
-clone は
-clone [index]
で画像の複製を作成します。
この場合、画像は1枚しかないのでインデックスは0です。+cloneと書いてもOKです。
この複製した画像に -rollを適用します。-rollは、
-roll [+X座標] [+Y座標] または -roll [-X座標] [-Y座標]
でX方向またはY方向に、画像をずらすことができます。
この場合、元サイズが200×200ピクセルの画像を、Y方向に100ピクセルずらしています。
その結果↓こういう感じの画像が生成されることになります。
(実行結果)
次にこの画像と元画像を -append を使って合成します。
-appendは、画像を上から順に合成しますが、+appendと書くことで画像を左から右に合成していきます。
ここでは元画像とクローン画像2枚を左から右に合成するので、実行結果は以下のようになります。
(実行結果)
後は、この画像に -tileオプションを実行すれば、完成です。
中々イイ感じのパターンができたんじゃないでしょうか。
以上、本日は応用編として、テキスタイルパターンの作成に挑戦してみました。
ではまた。