2008-08-12 6 views
21

ペーパーレスファイリングシステムを実装したいと思い、画像取得にWIAをC#で使用したいと考えていました。 CodeProjectなどにはいくつかのサンプルプロジェクトがありますが、私が見つけることができるすべてのものをダウンロードした後、私は問題に遭遇しました。VistaでC#/ WIAバージョン2.0を使用してスキャンする

それぞれ1つずつ、WIALibへの参照が壊れています。参照として「Microsoft Windows Image Acquisition」を追加すると、開発ワークステーション(これを実行するマシン)で使用できる唯一のバージョンは2.0です。

残念ながら、これらのサンプルプロジェクトはすべて、1.xに対してコード化されているようです。この参照は、 "Wialib"の代わりに "WIA"として参照されます。私は名前空間のインポートを変更するだけではなく、明らかにAPIが大幅に異なっています。

v2.0を実装しているか、または既存のサンプルプロジェクトをアップグレードしているかに関する情報はありますか?

+0

クイック質問:

私は、その後も、私はここにinterweb上のどこかに見つけたコードの小さなライブラリを作った、それはまた、複数のページをスキャンする機能を持っています。 WIAが絶対に必要ですか?または、トウェインと一緒に行くことができますか? TwainがOKなら、私は寄付するコードをいくつか持っているかもしれません。 –

答えて

21

WIAにアクセスするには、COMライブラリ「Microsoft Windows Image Acquisition Library v2.0」(wiaaut.dll)への参照を追加する必要があります。 「WIAを使用する」を追加する基本的な方法ザッツ

const string wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"; 
CommonDialogClass wiaDiag = new CommonDialogClass(); 
WIA.ImageFile wiaImage = null; 

wiaImage = wiaDiag.ShowAcquireImage(
     WiaDeviceType.UnspecifiedDeviceType, 
     WiaImageIntent.GrayscaleIntent, 
     WiaImageBias.MaximizeQuality, 
     wiaFormatJPEG, true, true, false); 

WIA.Vector vector = wiaImage.FileData; 

(System.Drawing)

Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData())); 
i.Save(filename) 

、私のフラットベッド/ドキュメントフィーダで動作します。しかし、一度に複数のドキュメント/ページが必要な場合は、おそらくもっと良い方法があります(私は見ることができますが、これは一度に1つのイメージしか扱いませんが、完全にはわかりません)。それはWIA v1のドキュメントですが、Scott HanselmanのCoding4Fun article on WIAには、複数のページでそれを行う方法に関する情報がいくつか含まれています。(私はまだそれ以上のことはしません)

ペーパーレスオフィスシステムMODI(Office Document Imaging)をチェックして、すべてのOCRを行うこともできます。

+0

私はこれを撃つでしょう。私はOCRを使いこなすことはありません。なぜなら、私は、システムが、まともなメタデータとタグ付けを行うよりも、私のもので十分に近い場所にいるのを見ていないからです。 これは、それは参照されて、私はAPIを掘ることができます。 –

+5

その魔法のGUIDの代わりにSystem.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString( "B")を使用することができます – Lars

+5

またはあなたはInterop.WIAで定義されたGUIDを使用することができます.dll。FormatID.wiaFormatJPEG –

0

は、WIAとなる必要があります。です。私は主にWIAセットアップを見ていました。なぜなら、それは異なるスキャナのための同じ基本インターフェースを提供するからです。私はこのマシン上に3台のスキャナを持っており、それらのすべてのためのTWAINドライバ/ソフトウェアは(スキャン中に画面をブロックするように)吸います。

文書管理のために、私は本当に単純な200dpiのグレースケールスキャンを探しています。そのため、TWAINドライバのほとんどは過度のものです。

しかし、TWAINに移行する前にWIAでどうやってやっているのかを最後に試してみることになっています。

0

別の注意:Microsoft.comからWIA 2.0 dllをダウンロードしてから、dllを参照してプロジェクトに追加する必要があります。

1

更新:別の回答(1年後)から別に追加しています。私はXPにはWIA 1.0があり、VistaにはWIA2.0があることが分かった。ただし、Windows XP Sp1 +用のWIA 2.0はhereからインストールできます。 http://adfwia.codeplex.com/

関連する問題