[応用編] Imagemagickの処理時間を高速化するコツ2 / miff: を使って構文を繋げる
miff: mpr: -watermark
※ こちらの記事は、前回の [応用編] Imagemagickの処理時間を高速化するコツ からの続きとなります。
皆様こんにちは。
前回、実行時間を早くするために「なるべく構文を1文にまとめる」ということを書かせていただきました。
本日は、実際に構文をまとめるために役に立つImagemagickの特殊フォーマットについて解説いたします。
1. 特殊フォーマット 「 miff:」を使って構文をまとめる
miff: は、ImageMagick専用のファイルフォーマットです。
画像の保存形式にTIFF ( Tagged Image File Format ) というのがありますが、それのImagemagick版?というイメージです。
実際にmiffファイルを書き出すこともできますが、photoshopなどでは読み込めません。
このmiff:は、Imagemagick内では中間保存形式としてよく利用され、2つの構文をつなぐパイプラインとしてよく利用されます。
では、miff: の実際の使い方について解説していきます。
convert \( in.png -resize 500x \) \( -size 500x500 xc:white \) +swap -gravity center -compose over -composite miff:- | composite logo: - -gravity center -watermark 10x100 exit.jpg
実行結果)
上記構文では、前回も使用した4000pixelのアンモナイト画像を縮小し、-watermarkオプションで Imagemagickロゴの透かしを入れています。
薄く透かしが入っているのがわかると思います。
ロゴはImagemagickの組込み画像を logo: で呼び出して使用しています。
組込み画像については、↓こちらの記事を参照してください。
(小ネタ) Imagemagickの組込み画像を使ってサクッと処理を確認する
-watermarkオプションは、convertコマンドでは使用できませんので、compositeコマンドの構文内で使用する必要があります。
そういった場合普通に考えると、convertコマンドを実行し、一旦そこまでの中間画像を書き出してから、その画像を使用してcompositeコマンドを実行するというふうに、2構文に分けて分けて書く必要があります。
ですが、このmiff: を使うことにより、convertから構文とcomposite構文を1文でつなぎ、中間画像として両コマンド間で受け渡すことができます。
そして中間画像はバーチャル的に生成されるので、実際に書きだされることはありません。
そのため、不要な画像が生成される心配もありません。
使用手順 )
miff: - で、仮のファイル名を - (ハイフン)としています。これはハイフンでなくても大丈夫ですが、慣例的にハイフンが良く使われています。
↓
2つの構文は | (パイプライン) でつなぎます。
↓
次の構文内で、画像を指定する個所で - (ハイフン)を書くことで中間画像を呼び出します。
書き方としては、こんな感じです。
もちろんconvertとconvertをつなぐこともできます。
また、miff: と同じような使い方ができる別の特殊フォーマットとして、mpr: というのもあります。
mpr:の使い方については、[応用編] Imagemagickを使ってテキスタイルパターンを作る 内で解説していますので、そちらを参考にして下さい。
今回は特殊フォーマットmiff: を使って、複数構文を一つに繋げる方法を解説いたしました。
このようにして構文を1文にまとめることで、Imagemagickの実行時間を短縮できるので、積極的に活用していきましょう。
ではまた。