LoginSignup
25

More than 5 years have passed since last update.

Imagemagickの高速化 mprとmpc

Last updated at Posted at 2014-11-25

Imagemagickのコマンドを高速化する機能として、mprとmpcというものがあります。

mpr (Memory Program Register)

mpr という仕組みを使うと、複数の処理を一つのコマンドにまとめることができます。

before

# hoge という字の画像を生成
$ convert -size 200x200 -background transparent -fill black -gravity Center label:hoge png:- | \
# それをbg.png と合成する
$ convert -composite - bg.png hoge.png

after

$ convert -size 200x200 -background transparent -fill black -gravity Center label:hoge -write mpr:hoge +delete mpr:hoge -composite bg.png hoge.png

mpr:hoge を出力として指定することで、Imagemagickプロセス内のメモリに hoge という名前で出力結果が一時的に保存されます。 その後、+delete で直前までのコマンドライン引数の内容をリセットし、最後に mpr:hoge を入力にして合成の処理を実行しています。

プロセスが1つになったことで、起動のオーバーヘッドや、入力データをパースする処理が省けるため、パフォーマンスが良くなります。

mpc (Magick Pixel Cache)

mpcは、Imagemagickが画像をパースした後のフォーマットです。 Imagemagickにとっては、汎用の画像フォーマットをパースするよりも、mpc形式を読み込んだ方が高速になります。
あらかじめ合成用の素材をmpcに変換しておくことで、パフォーマンスを改善することができます。

変換は、

$ convert bg.jpg bg.mpc

のように、出力フォーマットをmpcに指定するだけです。
このとき、 .mpc というファイルと、.cache という計2つのファイルが作成されます。 hoge.mpc を入力にするときは、 hoge.cache が同じディレクトリ内に必要です。

さっきの例の合成も、合成用素材にmpc を指定することができます。

$ convert -size 200x200 -background transparent -fill black -gravity Center label:hoge -write mpr:hoge +delete mpr:hoge -composite bg.mpc hoge.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25