掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TWAIN準拠スキャナーで48ビットカラースキャン (ID:48708)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自己レスです。 中身を確認してみました。 TWAIN I/F ソフトの方では、”prepareMeMXFer”と言う関数で共有メモリ(転送バッファ)を用意している様に思います。 ここで、BITDEPTHによる場合分けがないので、24ビットカラーの転送は可能でも、48ビットカラーの転送でエラーになる様に思います。 ここを修正して、48ビットカラーデータを想定したバッファを用意し、BITDEPTHで場合分けすれば良い様に思います。 TWAINの仕様では、転送バッファに画像のメタデータを含める事が出来ないので、別途、メタ情報の受け渡しが必要な様です。 TWAIN I/Fのソースでは、 {First of all, get information on the image being acquired} Result := Owner.TwainProc(AppInfo, @Structure, DG_IMAGE, DAT_IMAGEINFO, MSG_GET, @Info); if Result <> TWRC_SUCCESS then exit; {Calculate image size} with Info do size := ((((ImageWidth * BitsPerPixel + 31) div 32)*4) * info.ImageLength ); {Obtain image buffer transference sizes} Owner.TwainProc(AppInfo, @Structure, DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET, @Setup); blocks := (size div Integer(setup.Preferred)); size := (blocks + 1) * Integer(setup.Preferred); {Prepare new bitmap} structsize := size + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD); Handle := GlobalAlloc(GHND, StructSize); Dib := GlobalLock(Handle); Fillchar(Dib^, structsize, #0); の様に処理されています。 TWAINの仕様では、トリプレットと言う DG_IMAGE, DAT_IMAGEINFO, MSG_GET で、スキャナー側でスキャンされた画像のサイズを得るとしています。 その情報を基に転送バッファのサイズを決めて、 DG_CONTROL, DAT_SETUPMEMXFER, MSG_GET と言うトリプレットでスキャナーに対し転送メモリを指定する様です。 しかしながら、48ビットカラーの転送バッファを具体的にどの様に指定するか、まだ、把握できていません。 RGB別に各々16ビットの配列を用意するのだと推察しています。 ”TW_IMAGEMEMXFER”や”TW_MEMORY”などの構造体を利用する様に読み取れますが、具体的には理解できていません。 もう少し、調べてみようと思います。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.