リソース(設定ファイル・環境変数)
設定ファイル • モジュール • フォント • 環境変数
ImageMagick は、設定ファイル・ロード可能モジュール・フォント・環境変数など、多くの外部リソースに依存します。
設定ファイル
ImageMagick は、ここで詳述する多くの外部設定ファイルに依存します:
- coder.xml
- 画像形式を指定したコーダーモジュールに関連付ける。ImageMagick には、画像形式(JPEG など)の読み書きをサポートする多くのコーダーモジュールがある。一部のコーダーモジュールは複数の関連形式をサポートし、関連形式とそのコーダーモジュールの対応がこの設定ファイルで定義される。たとえば PNG コーダーモジュールは PNG だけでなく JNG・MNG 形式もサポートする。
- colors.xml
- 色名を赤・緑・青・アルファ強度に関連付ける。多くのコマンドラインオプションは色パラメータを必要とする。16 進値(#fff など)より名前(white など)で色を参照する方が便利なことが多い。このファイルは色名を等価な赤・緑・青・アルファ強度にマップする(例: white は red=255, green=255, blue=255, alpha=0)。
- configure.xml
- ImageMagick のビルドパラメータとシステム全体の環境変数(MAGICK_TEMPORARY_PATH など)を設定する。ImageMagick のビルド時に、多くのビルドパラメータがこの設定ファイルに保存される。バージョン、リリース日、依存デリゲートライブラリ、量子深度などが含まれる。
- delegates.xml
- デリゲートプログラムを特定の画像形式に関連付ける。ImageMagick は、生カメラ形式を読む darktable や PostScript 画像を読む Ghostscript など、特定の画像形式をサポートするため多くのデリゲートプログラムに依存する。入出力形式を外部デリゲートプログラムにマップするにはこの設定ファイルを使う。
- english.xml
- メッセージタグを英語訳に関連付ける。
- francais.xml
- メッセージタグをフランス語訳に関連付ける。
- locale.xml
- メッセージタグをロケールの訳に関連付ける。ImageMagick には、タグとして表される多くの情報・警告・エラーメッセージがある。タグは FileNotFound や MemoryAllocationFailed など、メッセージの短い説明。この設定ファイルは、ImageMagick が認識する各タグの訳を持つロケールを列挙する。現在は english.xml と francais.xml に英語・フランス語訳のみがある。
- log.xml
- ログパラメータを設定する。ImageMagick は大量の情報・デバッグ文を出力できる。情報がログメッセージにどう現れるか、どこにログメッセージを出力するかを設定するにはこのファイルを使う。
- mime.xml
- インターネットメディアタイプを一意の識別子に関連付ける。多くのファイルやデータストリームは、特定のインターネットメディアタイプを一意に識別する識別子を持つ。たとえば "Corel Draw drawing" 形式(mime type="application/vnd.corel-draw")のファイルはファイル名パターン *.cdr に関連付けられ、先頭文字列 "CDRXvrsn" も持つ。ImageMagick は、利用可能なときこの情報の組み合わせを使い、ファイルやデータストリームのインターネットメディアタイプを素早く判定しようとする。
- policy.xml
-
ImageMagick のセキュリティポリシーを設定する。既定では任意のコーダー・デリゲート・フィルタ・ファイルパスが許可される。たとえば MPEG ビデオデリゲートへのアクセスを拒否したり、あるファイルシステムからの読み込みを許可しつつ同じファイルシステムへの書き込みを拒否したりするにはポリシーを使う。またリソースポリシーでリソース上限を設定する。ポリシーは、ImageMagick がシステムに与える全体的影響を制限したいマルチユーザーサーバーで有用。たとえば、メモリ内の最大画像サイズを 100MP に制限するには:
この area 上限より大きい画像はメモリではなくディスクにキャッシュされる。画像の最大幅をピクセルで制限するには width を使う。この上限を超えると例外がスローされ処理が停止する。
<policy domain="resource" name="width" value="8KP"/>
任意の ImageMagick コマンドの経過時間を 5 分に制限するには、このポリシーを使う:
<policy domain="resource" name="time" value="300"/>
便宜上、memory・map・disk リソースの引数は SI 接頭辞で定義する(例: 100MB)。また、リソースポリシーは ImageMagick の各インスタンスの最大値(例: ポリシーのメモリ上限 1GB に対し -limit 2GB オプションはポリシー最大を超えるのでメモリ上限は 1GB)。
- quantization-table.xml
- カスタム JPEG 量子化テーブル。-define:q-table=quantization-table.xml で有効化する。
- thresholds.xml
- 順序ポスタライズドディザのしきい値マップを設定する。
- type.xml
- フォントを設定する。ImageMagick 内で使いたい任意のフォントの名前・ファミリ・ファウンダリ・スタイル・形式・メトリクス・グリフを定義する。
- type-ghostscript.xml
- Ghostscript フォントを設定する。Ghostscript パッケージには ImageMagick からアクセスできる多くのフォントが含まれる。
- type-windows.xml
- 名前を Windows フォントグリフに関連付ける。
Linux では、ImageMagick は上記の各設定ファイルを次の場所を順に探し、見つかれば読み込みます:
$MAGICK_CONFIGURE_PATH
$PREFIX/etc/ImageMagick-7
$PREFIX/share/ImageMagick-7
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/etc/ImageMagick
環境変数 $PREFIX は既定のインストールパス(例: /usr/local)です。client path は ImageMagick クライアントの実行パス(例: /usr/local)です。
Linux のビルド済み未インストールバイナリ配布物では、設定の読み込み順は次のとおりです:
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME/etc/ImageMagick-7
$MAGICK_HOME/share/ImageMagick-7
$PREFIX/share/ImageMagick-7
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick/
<client path>/etc/ImageMagick
<current directory>
Windows では、ImageMagick はこれらの設定ファイルを次の順で探し、見つかれば読み込みます:
$MAGICK_CONFIGURE_PATH
<windows registry>
$PREFIX/config
$USERPROFILE/.config/ImageMagick
<client path>
上記で $PREFIX は既定のインストールパスで、通常 c:\Program Files\ImageMagick-7.1.2 です。
未インストールの Windows インストールでは、設定の読み込み順は次のとおりです:
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME
$USERPROFILE/.config/ImageMagick
client path
<current directory>
設定ファイルが見つからない場合、ImageMagick は組み込みの既定値に依存します。
モジュール
コーダー
画像コーダー(エンコーダ/デコーダ)は、1 つの画像形式(PNG、GIF、JPEG など)の登録、(任意で)分類、(任意で)読み込み、(任意で)書き込み、登録解除を担当します。ImageMagick はコーダーを次の順で探し、最初に見つかった一致を使います:
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders
<client path>/../lib/ImageMagick-7.1.2/modules-Q16/coders
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/coders
$MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/coders
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/lib/ImageMagick-7.1.2/modules-Q16/coders
フィルタ
ImageMagick は、独自のカスタム画像処理アルゴリズムを追加する便利な仕組みを提供します。ImageMagick はフィルタを次の順で探し、最初に見つかった一致を使います:
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters
<client path>/../lib/ImageMagick-7.1.2/modules-Q16/filters
$MAGICK_HOME/lib/ImageMagick-7.1.2/modules-Q16/filters
$MAGICK_HOME/share/ImageMagick-7.1.2/modules-Q16/filters
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/lib/ImageMagick-7.1.2/modules-Q16/filters
フォント
ImageMagick は生の TrueType・PostScript フォントファイルを読み込めます。フォント設定ファイル type.xml を次の順で探し、見つかれば読み込みます:
$MAGICK_CONFIGURE_PATH
$MAGICK_HOME/etc/ImageMagick/-7.1.2
$MAGICK_HOME/share/ImageMagick-7.1.2
$XDG_CACHE_HOME/ImageMagick
$HOME/.config/ImageMagick
<client path>/etc/ImageMagick
$MAGICK_FONT_PATH
環境変数
ImageMagick が認識する環境変数には次があります:
| HOME | ディレクトリが存在する場合、$HOME/.config/ImageMagick で設定ファイルを探すパスを設定する。 |
|---|---|
| LD_LIBRARY_PATH | ImageMagick の共有ライブラリと他の依存ライブラリへのパスを設定する。 |
| MAGICK_AREA_LIMIT | ピクセルキャッシュメモリに置ける画像の最大 width * height を設定する。area 上限を超える画像はディスクにキャッシュ(MAGICK_DISK_LIMIT 参照)され、任意でメモリマップされる。 |
| MAGICK_FILTER_MODULE_PATH | フィルタ処理モジュール(-process で呼び出される)を探す際の検索パスを設定する。このパスにより、ImageMagick のインストールディレクトリにコピーする代わりに、好みの場所にロード可能モジュールを追加して画像処理機能を拡張できる。検索パスの書式は OS の検索パスに似る(Linux はコロン区切り、Windows はセミコロン区切り)。このユーザー指定パスが既定の検索パスより先に探される。 |
| MAGICK_CODER_MODULE_PATH | ImageMagick がコーダーモジュールを見つけるパスを設定する。このパスにより、インストールディレクトリにコピーする代わりに、好みの場所からロード可能コーダーモジュールを追加して、サポートする画像形式を任意に拡張できる。検索パスの書式は OS の検索パスに似る。このユーザー指定パスが既定の検索パスより先に探される。 |
| MAGICK_CONFIGURE_PATH | ImageMagick が設定ファイルを見つけるパスを設定する。設定(.xml)ファイルを探すのにこの検索パスを使う。検索パスの書式は OS の検索パスに似る。このユーザー指定パスが既定の検索パスより先に探される。 |
| MAGICK_DATE_PRECISION | 任意のタイムスタンプで表示される最大文字数を設定する。 |
| MAGICK_DEBUG | デバッグオプションを設定する。デバッグオプションの説明は -debug を参照。 |
| MAGICK_DISK_LIMIT | ピクセルキャッシュが使えるディスク容量の上限(バイト)を設定する。この上限を超えると、ピクセルキャッシュは作成されずエラーメッセージが返る。 |
| MAGICK_ERRORMODE | プロセスのエラーモードを設定する(Windows のみ)。典型的には、エラーモードダイアログがメッセージボックスを表示してアプリをハングさせるのを防ぐため値 1 を使う。 |
| MAGICK_FILE_LIMIT | 開いているピクセルキャッシュファイルの最大数を設定する。この上限を超えると、以降ディスクにキャッシュされるピクセルは閉じられ、必要に応じて再度開かれる。これにより多数の画像をディスク上で同時にアクセスできるが、繰り返しの open/close 呼び出しによる速度ペナルティがある。 |
| MAGICK_FONT_PATH | ImageMagick が TrueType・PostScript Type1 フォントファイルを探すパスを設定する。このパスは、特定のフォントファイルがカレントディレクトリで見つからない場合にのみ参照される。 |
| MAGICK_HEIGHT_LIMIT | 画像の最大高さを設定する。 |
| MAGICK_HOME | ImageMagick インストールディレクトリの最上位のパスを設定する。このパスは、場所がハードコードされずインストーラで設定されていない未インストールビルドの ImageMagick で参照される。 |
| MAGICK_LIST_LENGTH_LIMIT | 画像シーケンスの最大長を設定する。 |
| MAGICK_MAP_LIMIT | ピクセルキャッシュ用に確保するメモリマップの最大量(バイト)を設定する。この上限を超えると、画像ピクセルはディスクにキャッシュされる(MAGICK_DISK_LIMIT 参照)。 |
| MAGICK_MEMORY_LIMIT | ヒープからピクセルキャッシュ用に確保するメモリの最大量(バイト)を設定する。この上限を超えると、画像ピクセルはメモリマップディスクにキャッシュされる(MAGICK_MAP_LIMIT 参照)。 |
| MAGICK_OCL_DEVICE | 特定の高速化アルゴリズム(blur、convolve など)のハードウェア高速化を無効にするには off に設定する。 |
| MAGICK_PRECISION | 表示する有効桁数の上限を設定する。 |
| MAGICK_SHRED_PASSES | ImageMagick が作る一時ファイルを非公開に保ちたい場合、削除前にゼロやランダムデータで上書きする。最初のパスでファイルはゼロ化される。以降のパスではランダムデータが書かれる。 |
| MAGICK_SYNCHRONIZE | すべての画像データを完全にフラッシュしてディスクに同期させるには "true" に設定する。性能ペナルティはあるが、システムクラッシュ時に有効な画像ファイルを保証でき、ピクセルキャッシュ用のディスク容量不足を早期報告できる。 |
| MAGICK_TEMPORARY_PATH | 一時ファイルを格納するパスを設定する。 |
| MAGICK_THREAD_LIMIT | 最大並列スレッド数を設定する。多くの ImageMagick アルゴリズムはマルチプロセッサシステムで並列実行される。この環境変数で並列実行を許可するスレッドの最大数を設定する。 |
| MAGICK_THROTTLE_LIMIT | 指定したミリ秒数だけ定期的に CPU を解放する。 |
| MAGICK_TIME_LIMIT | 最大時間(秒)を設定する。この上限を超えると例外がスローされ処理が停止する。 |
| MAGICK_WIDTH_LIMIT | 画像の最大幅を設定する。 |
| SOURCE_DATE_EPOCH | UNIX タイムスタンプ。閏秒を除く 1970 年 1 月 1 日 00:00:00 UTC からの秒数。パイプラインビルド用の特別な設定。この設定は time-to-live 設定を無効にする。 |
MAGICK_MEMORY_LIMIT・MAGICK_DISK_LIMIT・MAGICK_MEMORY_LIMIT 環境変数の引数は SI 接頭辞で定義します(例: 100MB)。MAGICK_WIDTH_LIMIT・MAGICK_HEIGHT_LIMIT・MAGICK_AREA_LIMIT はメガピクセルの MP などのピクセル接尾辞を受け付けます(例: 100MP)。なお、セキュリティポリシーに対して上限を厳しくできますが、緩めることはできません。