NmagemanModule SDK

INDEX

NmagemanModule SDKとは?

NmagemanModule SDKはNmagemanのモジュールを作成するための開発キットです。
Nmagemanはモジュールによって機能を拡張することができます。

パッケージ内容
NmagemanModule.h
NmagemanModule開発用ヘッダーファイル(C++)
FreeImage.h
画像ライブラリヘッダーファイル
SampleModule
サンプルモジュール
注意事項
  1. 本ソフトウェアの利用は良識の範囲内でお願い致します。
  2. 本ソフトウェアの利用による損害の保証はお受けできません。
  3. 本ソフトウェアの利用は楽しんで行っていただきますようお願い致します。
モジュール 仕様
モジュール形態
DLL (Dynamic Link Library)
エクスポートすべきモノ達
NNmagemanModule::CFreeImageAPI* FreeImageAPI; unsigned char ModuleID; NNmagemanModule::FOnConvert* OnConvertNext; NNmagemanModule::FOnConvertWithTime* OnConvertWithTimeNext; NNmagemanModule::FOnConvertCore* OnConvertCoreNext; bool OnConvert( LPEXTENSION_CONTROL_BLOCK lpECB, NNmagemanModule::IQueryString* pQueryString, NNmagemanModule::CConvertRequest& rRequest, NNmagemanModule::IImageInputCached& rInputCached, NNmagemanModule::IImageOutputCached& rOutputCached ); bool OnConvertWithTime( LPEXTENSION_CONTROL_BLOCK lpECB, NNmagemanModule::IQueryString* pQueryString, NNmagemanModule::CConvertRequest& rRequest, NNmagemanModule::IImageInputWithTimeCached& rInputCached, NNmagemanModule::IImageOutputWithTimeCached& rOutputCached ); bool OnConvertCore( const NNmagemanModule::CConvertRequest& rRequest, FIBITMAP*& pInputImage, FIBITMAP*& pOutputImage );
FreeImageAPI
モジュールがロードされた際、FreeImageライブラリへのポインタがここに渡されます。
モジュールはFreeImageAPIを通して画像を扱うことができます。
FreeImageAPIのメンバ関数については NmagemanModule.h をご覧ください。
FreeImageAPIのメンバ関数はFreeImageライブラリと全く同じネーミングです。
ライブラリの詳細はFreeImage3154.pdfを参照してください。
ModuleID
モジュールがロードされた際、モジュールに振られたIDがここに渡されます。
OnConvertやOnConvertCoreで rRequest.m_aModuleSpace を利用する際に必要になります。
OnConvertNext
モジュールがロードされた際、次のモジュールのOnConvert関数へのポインタがここに渡されます。
Nmagemanのモジュールは数珠つなぎに複数セットすることができます。
モジュールが提供するOnConvert関数はNmagemanの処理を継続するためにOnConvertNextを呼び出す必要があります。
ただし、モジュールが故意にOnConvertNextを呼び出さないことも許されます。
OnConvertWithTimeNext
OnConvertNext の AllwaysSendLastModified版です。
Nmageman の設定でAllwaysSendLastModifiedをyesにするときにエクスポートする必要があります。
詳細は NmagemanModule.h をご覧ください。
OnConvertCoreNext
モジュールがロードされた際、次のモジュールのOnConvertCore関数へのポインタがここに渡されます。
Nmagemanのモジュールは数珠つなぎに複数セットすることができます。
モジュールが提供するOnConvertCore関数はNmagemanの処理を継続するためにOnConvertCoreNextを呼び出す必要があります。
ただし、モジュールが故意にOnConvertCoreNextを呼び出さないことも許されます。
OnConvert
クライアントからのHTTP要求が発生し、Nmagemanが変換準備を行う際にこの関数が呼ばれます。
モジュールはモジュール独自の準備をこのタイミングで行ってください。
lpECB
LPEXTENSION_CONTROL_BLOCK
詳細は httpext.h をご覧ください。
pQueryString
NNmagemanModule::IQueryString*
HTTP要求時のQueryStringを扱います。
詳細は NmagemanModule.h をご覧ください。
rRequest
NNmagemanModule::CConvertRequest&
後の処理:OnConvertCore に渡される変換要求を表す構造体。
rRequest.m_aModuleSpace にはモジュール独自の要求を収めることが可能です。
その際には必ず rRequest.m_aModuleSpace[ModuleID] を利用してください。
また、このrRequestのMD5値がキャッシュキーに利用されます。
次回の変換時にキャッシュが利用されるようにするために、
同じ変換結果の場合には同じ rRequest.m_aModuleSpace[ModuleID] になるようにしてください。
詳細は NmagemanModule.h をご覧ください。
rInputCached
NNmagemanModule::IImageInputCached&
入力画像を扱うインターフェース。
詳細は NmagemanModule.h をご覧ください。
rOutputCached
NNmagemanModule::IImageOutputCached&
出力画像を扱うインターフェース。
詳細は NmagemanModule.h をご覧ください。
OnConvertWithTime
OnConvert の AllwaysSendLastModified版です。
Nmageman の設定でAllwaysSendLastModifiedをyesにするときにエクスポートする必要があります。
詳細は NmagemanModule.h をご覧ください。
OnConvertCore
Nmagemanの変換準備が整い、画像を変換する際にこの関数が呼ばれます。
モジュールはモジュール独自の変換をこのタイミングで行ってください。
rRequest
NNmagemanModule::CConvertRequest&
モジュールが独自に OnConvert でセットした要求値は rRequest.m_aModuleSpace[ModuleID] で取得できます。
詳細は NmagemanModule.h をご覧ください。
pInputImage
FIBITMAP*&
入力となる画像がここに渡されます。
詳細は NmagemanModule.h をご覧ください。
pOutputImage
FIBITMAP*&
独自の変換を行った後、出力するべき画像をここにセットしてください。
詳細は NmagemanModule.h をご覧ください。
サンプル
SampleModule にサンプルを同梱いたします。
このサンプルでは "xxx.jpg?w=200&grey=" なるアクセスがあった際に画像をグレースケールに変換します。
VC10(VS2010)でビルド確認をしています。
概念図
+---------------------------------------------------------+ | Nmageman | | | | | | Module1 Module2 Module... | | | +---------------+ +---------------+ | | | | | | | | | +--->| OnConvert |->| OnConvert |- - ->(*1) | | | | | | | | (*1)-->| OnConvertCore |->| OnConvertCore |- - ->(*2) | | | | | | | | (*2) +---------------+ +---------------+ | | | | | | | | ~ | +---------------------------------------------------------+
Version

このSDKは Nmageman 2.41.1.0 以降に対応しています。