在 Vista 上使用 C#/WIA 2.0 版进行扫描
-
08-06-2019 - |
题
我想要实现一个无纸化归档系统,并希望使用 WIA 和 C# 来采集图像。CodeProject等上有相当多的示例项目。然而,在下载了我能找到的每一个之后,我遇到了一个问题。
在每一个中,对 WIALib 的引用都被破坏了。当我添加“Microsoft Windows Image Acquisition”作为参考时,我的开发工作站(也是将运行它的计算机)上唯一可用的版本是 2.0。
不幸的是,这些示例项目中的每一个似乎都是针对 1.x 进行编码的。该引用作为“WIA”而不是“WIALib”。我尝试了一下,只是更改了命名空间导入,但显然 API 截然不同。
是否有关于实施 v2.0 或升级这些现有示例项目之一的信息?
解决方案
要访问 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;
(系统图)
Image i = Image.FromStream(new MemoryStream((byte[])vector.get_BinaryData()));
i.Save(filename)
这是一种基本方法,适用于我的平板/文档送纸器。如果您一次需要多个文档/页面,可能有一种更好的方法来做到这一点(据我所知,这一次只能处理一张图像,尽管我不完全确定)。虽然它是 WIA v1 文档,但 Scott Hanselman 的 关于 WIA 的 Coding4Fun 文章 我认为,确实包含有关如何在多个页面上执行此操作的更多信息(我自己还没有走得更远)
如果它是无纸化办公系统,您可能还需要查看 MODI(Office Document Imaging)来为您完成所有 OCR。
其他提示
这里还介绍了如何以 WIA 1.0 为目标,以便您可以将应用程序发送到 Windows Xp。我拼命寻找的东西!如何在Vista下使用WIA 1进行开发?
更新: :我单独添加这个,因为它是一个不同的答案(一年后)。我了解到XP有WIA 1.0,Vista及以上版本有WIA2.0。不过,您可以从以下位置安装适用于 Windows XP Sp1+ 的 WIA 2.0: 这里.
然后我还用我在互联网上找到的代码制作了一个小型库,它还具有扫描多个页面的能力:http://adfwia.codeplex.com/
事实并非如此 需要 成为WIA。我主要关注 WIA 设置,因为它为不同的扫描仪提供相同的基本界面。我的这台机器上有 3 个扫描仪,所有扫描仪的 TWAIN 驱动程序/软件都很糟糕(比如在扫描过程中挡住屏幕)。
对于文档管理,我确实在寻找简单的 200dpi 灰度扫描,因此 TWAIN 驱动程序中的大部分内容都是多余的。
也就是说,在转向 TWAIN 之前,我最后一次尝试弄清楚如何在 WIA 中做到这一点,在此询问是我的一部分。
另一个注意事项:您必须从 Microsoft.com 下载 WIA 2.0 dll,然后浏览到该 dll 并将其添加到您的项目中。