[応用編] Imagemagickの処理時間を高速化するコツ2 / miff: を使って構文を繋げる

miff: mpr: -watermark

Imagemagickスピードアップ

 

※ こちらの記事は、前回の [応用編] 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の実行時間を短縮できるので、積極的に活用していきましょう。

 

ではまた。