我想实现无纸化文件系统,并希望将WIA与C#一起用于图像采集。 CodeProject等上有很多示例项目。但是,在下载了我能找到的每一个项目之后,我遇到了一个问题。
在每一个中,对WIALib的引用都被打破了。当我添加“Microsoft Windows Image Acquisition”作为参考时,我的开发工作站(也是运行它的机器)上唯一可用的版本是2.0。
不幸的是,这些示例项目中的每一个似乎都是针对1.x编码的。引用的内容为“WIA”而不是“WIALib”。我拍了一下,只是更改了命名空间导入,但很明显,API完全不同。
是否有关于实施v2.0或升级其中一个现有示例项目的信息?
答案 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并将其添加到您的项目中。