在Vista上使用C#/ WIA 2.0版进行扫描

时间:2008-08-12 15:28:35

标签: c# .net .net-3.5 wia image-scanner

我想实现无纸化文件系统,并希望将WIA与C#一起用于图像采集。 CodeProject等上有很多示例项目。但是,在下载了我能找到的每一个项目之后,我遇到了一个问题。

在每一个中,对WIALib的引用都被打破了。当我添加“Microsoft Windows Image Acquisition”作为参考时,我的开发工作站(也是运行它的机器)上唯一可用的版本是2.0。

不幸的是,这些示例项目中的每一个似乎都是针对1.x编码的。引用的内容为“WIA”而不是“WIALib”。我拍了一下,只是更改了命名空间导入,但很明显,API完全不同。

是否有关于实施v2.0或升级其中一个现有示例项目的信息?

5 个答案:

答案 0 :(得分:22)

要访问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)

这是一种基本的方式,适用于我的平板/ doc送料器。如果你一次只需要一个以上的文档/页面,可能有更好的方法(从我所看到的,这一次只处理一个图像,虽然我不完全确定)。虽然它是一个WIA v1文档,Scott Hanselman的Coding4Fun article on WIA确实包含了关于如何为多个页面执行此操作的更多信息,我认为(我还要比自己更进一步)

如果是无纸办公系统,您可能还需要查看MODI(Office Document Imaging)来为您完成所有OCR。

答案 1 :(得分:1)

答案 2 :(得分:1)

更新:我将其另外添加,因为它的答案不同(一年后)。我学会了XP有WIA 1.0和Vista以后有WIA2.0。但是,您可以从here安装适用于Windows XP Sp1 +的WIA 2.0。

然后我还创建了一个小型库,其中包含我在interweb上找到的代码,它还具有扫描多个页面的能力: http://adfwia.codeplex.com/

答案 3 :(得分:0)

需要才能成为WIA。我主要关注WIA设置,因为它为不同的扫描仪提供相同的基本界面。我在这台机器上安装了3台扫描仪,所有TWAIN驱动程序/软件都很糟糕(比如在扫描过程中阻塞屏幕)。

对于文档管理,我真的在寻找简单的200dpi灰度扫描,因此TWAIN驱动程序中的大多数内容都是过度的。

那就是说,在这里询问是我最后一次尝试在WIA中如何做到这一点的一部分,然后再转向TWAIN。

答案 4 :(得分:0)

另一个注意事项:您必须从Microsoft.com下载WIA 2.0 dll,然后浏览到dll并将其添加到您的项目中。