Twain機器から画像を読み込んで、JPEG/GIF/PNG/TIFF/BMP形式で保存するツールを公開しました。
TwainはPC用スキャナの規格ですが、webcamも対応しています。logitech製のwebcam等、ムービー撮影の他に「写真撮影モード」があるカメラなら大体動くはずです。
Twainなので、DirectInputからストリームの一部を読む方法よりも解像度が高いと思います。多分。
■ダウンロード
・Twain2ImageFile ver1.00
・SourceCode(VisualStudio2005pro+C#2.0)
・archive
■使い方(readme.txt より)
1.起動する
2.Selectボタンを押して、Twain機器を選ぶ
3.Formatから画像ファイルの形式を選ぶ
4.Settingボタンを押してTwain機器の標準取り込み画面を開き、取り込む
5.Twain2ImageFile.exeと同じディレクトリに、画像ファイルが生成されます
※Acquirボタンを押すと、標準取り込み画面を開かずにいきなり取り込みます
■もっと詳しく
Twain2ImageFile.exe から起動させます。
Selectボタンでカメラを選択します
以前ハード的にhackした事もある Qcam® Messenger QV-40で動作確認をしました。
Settingボタンで、Twain機器の標準取り込み画面を表示します。ピントや解像度などが設定できます
写真が撮れます。Twain2ImageFile.exeと同じディレクトリに保存します。
ファイル名はタイムスタンプになっています。(フォーマットが変だけど)
Acquireボタンを押すと、ダイアログ無しでいきなり写真を撮れます。
画像ファイル形式も選択できます。dir2xml等と組み合わせると使い勝手が良いです。
■さらに改造する
TwainControlFormがこのGUIですが、acquire()というpublicメソッドが公開されています。実行すると他のアプリケーションから呼び出して撮影できます。
ソースコードの中のTestApplication1というプロジェクトの中に、別アプリからTwainControlFormを使って写真を撮影するサンプルを用意しました。
Timerコンポーネントと組み合わせて定点観測カメラにしたりとか、自由に改造okです。
※ちなみにVisualStudio2005 C# Expressという無料版でも多分いじれると思います。
あと、保存ファイル名はFilePathというアクセサで指定できるます。
■動作環境(Readme.txt より)
Microsoft .NET Framework2.0が必要です。
起動しない場合は[スタート]→[Windows Update]をしてから
下記をインストールして下さい。
.NET Framework2.0
・日本語 Language Pack (32ビット版:x86)
・再頒布可能パッケージ(32ビット版: x86)
をインストール
また、WindowsXP以前のOSではそれでも起動しないかもしれません。
これもインストールして下さい。
.NET Framework1.1
■技術的な事
.NET TWAIN image scanner – The Code Project – .NET
のコードを改造して作りました。元のコードにコメントがほとんど無かったので、コードを改造して全部コメント付けました。ソースコードの中のTwainGuiプロジェクトがCodeProjectのコードにコメント付けた奴。
あとノートにもいっぱい書いた…
twain_32.dllで取り込んで、gdiplus.dllに渡してjpeg圧縮/保存させた。
win32apiなので、windowsメッセージやmanaged領域の外からの構造体やポインタをStructLayoutした構造体で受け取って、MarshalAsして、いっぱい扱う羽目になって大変だったけどお陰で結構スキルアップした気がする。
Twainに関してははてブに色々メモしたのでどうぞ