.NETでスキャナを扱うためのTWAINライブラリ
結論から言うと、TwainDotNetを使うのが一番幸せになれそうだなということなんですけどね。
twaindotnet - A TWAIN library for the .net platform. - Google Project Hosting
ネット上の日本語情報にあたってみたけれど・・・
今月に入ってから、仕事で.NETからスキャナを扱うことをしていました。
たぶんライブラリあるだろうなぁと調べてみたのですが、なかなか情報が少なく・・・。
有料のコンポーネントもいろいろあるようですが、オープンソースのライブラリで日本語情報としてあったのがこの2つ。助かりました。
C#でTWAINを操作してみる - ニヤリ TechSide
.netでTWAINスキャナから画像の取込(実践編) | .log
ということで、この2つの情報をもとに.NET TWAIN image scannerを使ってみたのです。
.NET TWAIN image scanner - CodeProject
このソースはだいぶ古く、.NET 1.1のころのもののようです。
ですが、.NET 4.0に普通にコンバートしてくれたのでしばらく使っていました。
それで分かったのですが、このライブラリ・・・というかラッパーは、結構使いづらいなということでした。
まずい点としては、
- リソースの解放を自力でやらなければいけない。
- メッセージポンプの実装が必要になるので、それなりの量のグルーコードを書かなければいけない。
の2つです。
特にリソースの解放に関しては、ポインタのない世界で生きてきた自分には苦しくて。。。
リソース解放の方法を調べていたら見つけたデキル奴
そんなわけで、うまいことリソース解放できる仕組みを作ろうと思ってグーグル先生にいろいろ聞いてみました。そこで見つけたのが、上記で紹介したTwainDotNetでした。
このライブラリは.NET TWAIN image scannerに対して、制御用のメソッドを数多く加えています。リソース制御もきっちりやってくれています。
そのおかげで、AccessViolationExceptionが発生しないようになりました。
また、TWAIN DriverのUI表示や画像の回転を指定する際にTWAINのソースをいじくる必要もありませんでした。
実際のところ、このライブラリ一つで十分実用に耐えうると感じています。
細かい使い方に関しては、TwainDotNetのサンプルプロジェクトを参照してください。
/ - twaindotnet - A TWAIN library for the .net platform. - Google Project Hosting