Nmagemanはアクセス時に画像を動的変換するISAPI Extensionです。
以下のようなことが可能です。
画像を変換するには目的画像へのアクセスに、変換指示のQueryStringを付加します。
QueryStringがない場合には元画像をそのまま返します。
"w"と"h"の単位を指定します。
指定しない場合はピクセル単位になります。
値は以下のいずれかを指定してください。
Outer Box 変換を指定します。
Outer Box 変換では "w" と "h" で表わされるBoxをはみ出してでもぴったりなサイズに変換します。
Boxからはみ出る分は切り落とすことができます。
切り落とす指示は2文字で以下のいずれかを指定してください。
[ex.] /sample.jpg?w=300&h=300&ob=CM
Inner Box 変換を指定します。
Inner Box 変換では "w" と "h" で表わされるBoxをはみ出さないぴったりなサイズに変換します。
Boxに余る部分は寄せることができます。
寄せる指示は2文字で以下のいずれかを指定してください。
寄せて余る部分には ibc で指定する色が塗られます。
[ex.] /sample.jpg?w=300&h=300&ib=CM
Inner Box 変換で余る部分に塗られる色を指定します。
"RRGGBBAA" の形式で指定してしてください。
透過のない画像形式(jpgなど)の場合アルファ値は無視されます。
[ex.白] /sample.jpg?w=300&h=300&ib=CM&ibc=fff
[ex.赤] /sample.jpg?w=300&h=300&ib=CM&ibc=ee1111
[ex.透明] /sample.png?w=300&h=300&ib=CM&ibc=ffffff00
画像の回転を指定します。
"auto" か 数値(角度) を指定できます。
"auto" の場合、画像に埋め込まれた Orientation 情報により自動で回転します。
[ex.] /sample.jpg?w=300&h=300&r=auto
[ex.] /sample.jpg?w=300&h=300&r=90
Nmageman設定のルート要素。
拡大の可否を指定します。
JPG出力時の品質(%)を指定します。
キャッシュフォルダのパスを指定します。
"Nmageman.dll"からの相対パスか絶対パスを指定できます。
空文字列("")を指定するとキャッシュ機能が無効になります。
キャッシュ節約の可否を指定します。
"yes" に設定すると "su=ep" 時にはキャッシュを行わないようになります。
アクセスの多いサイトなどで、キャッシュファイルの数を減らすことができます。
キャッシュファイル削除機能に利用される時間(秒)を指定します。
0を指定するとキャッシュファイル削除機能が無効になります。
変換元画像に変更がないかをチェックする間隔(秒)を指定します。
0を指定するとアクセスごとにチェックします。
QueryStringのないアクセス時に利用される既定のQueryStringを指定します。
変換方法を指定せずに画像ファイルへアクセスした場合の既定の変換方法を指定できます。
XML構文に従って "w=100&su=ep" などと指定してください。
同時に変換処理するスレッドの最大数を指定します。
0 を指定するとスレッドが無制限に同時変換処理を行います。
サーバーに搭載のCPU数以下に設定することで高負荷時のキャッシュレスポンスや
サーバー管理レスポンスの向上が期待できます。
変換処理後の処理待機時間を指定します。(msec)
"ConvertThreadsMax" が 1以上 の場合に有効です。
高負荷時に変換処理がCPUを食いつぶさないようにするためにはこの値を設定してください。
0 を指定すると変換処理後に待機しません。
yes に設定すると、キャッシュの有効無効に関係なく常に Last-Modified レスポンスヘッダを返します。
設定値が no または指定なしの場合、キャッシュが有効なときだけ Last-Modified レスポンスヘッダが返ります。
また、yes に設定されているときは OnConvertWithTime を実装したモジュールだけが有効になります。
If-Modified-Since リクエストヘッダで受け取った日付と、
サーバーが保持している画像リソースの日付を比較する際に追加される秒数です。
通常、If-Modified-Since リクエストヘッダで受け取った日付より画像リソースの方が古い場合、
サーバーは画像を処理せず HTTPレスポンス "304 Not Modified" を返しますが、
この設定を利用すると If-Modified-Since 側の日付に指定された秒数を足してから比較が行われます。
ロードバランス環境など、複数のサーバーで同じ画像を保持していて、画像リソースの日付が微妙に異る場合に利用できます。
変換画像のプロキシ設定をします。
アクセス時URLが<Map/>で指定される設定に引っ掛かる場合はプロキシします。
<Map/>は複数指定可能で、上から順に処理されます。
どの<Map/>にも引っかからない場合はローカルファイルとして処理されます。
プロキシ先にQueryStringを渡したい場合には以下のうようにアクセスしてください。
http://aru.host/getimage.php?image=16200?w=300&h=300
変換画像のプロキシマップを指定します。
拡張子検索機能を設定します。
アクセス時URLの画像が見つからない場合は<Ext/>で指定した拡張子を検索します。
<Ext/>は複数指定可能で、上から順に検索が行われます。
検索する拡張子を指定します。
設定する値に "." は必要ありません。
画像に貼るシールの設定をします。
アクセス時URLが<Map/>で指定される設定に引っ掛かる場合はシールが貼られます。
<Map/>は複数指定可能で、上から順に処理されます。
どの<Map/>にも引っかからない場合はシールが貼られません。
[シールとは?]
シールとは画像の上にかぶせられる画像のことです。
シールは対象画像の大きさにBOX変換され、Alignで指定された位置に貼られます。
シール画像には32bit透過PNGを利用すると便利です。
変換画像のシールマップを指定します。
Moduleの設定をします。
<Path/>で指定されるModuleがNmagemanに追加されます。
<Path/>は複数指定可能で、上から順に追加されます。
Moduleは16個まで追加できます。
AllwaysSendLastModifiedがyesのときは OnConvertWithTime を実装したモジュールだけが有効になります。
[Moduleとは?]
ModuleとはNmagemanの機能を拡張するプログラムのことです。
DLLファイルとして提供されるModuleを自由に組み合わせて利用することができます。
設定順を変えることで変換のされかたも自由に変えることができます。
Moduleを指定します。
画像に埋め込まれたメタデータを消去します。
画像には、EXIF情報をはじめとする、画像を撮影した機器の名前、機器の設定、撮影場所のGPS情報などが
埋め込まれていることがあります。この設定を行うとこれらのメタデータを消去できます。
メターデータはFreeImageのメタデータモデルに基づき下記の12モデルに分類されます。
※詳細についてはFreeImageのマニュアルを参照してください。
消去するメタデータモデルを指定します。
Environments設定のルート要素。
User-Agentのキーとなる文字列パターンを指定します。
<UAKey/>は複数指定することができます。
端末情報を指定します。
<Env/>は複数指定することができます。
Nmagemanの制作にあたり以下のモノを包含させていただきました。
各提供者の方々に厚く御礼申し上げます。