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

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

我想实现无纸化归档系统,并希望使用带有 C# 的 WIA 来获取图像。在 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 的 Coding4Fun article on WIA确实包含更多关于如何为多个页面执行此操作的信息,我认为(我自己还没有走得更远)

如果它用于无纸化办公系统,您可能还想查看 MODI(Office 文档成像)来为您完成所有 OCR。

关于c# - 在 Vista 上使用 C#/WIA 2.0 版进行扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8966/

相关文章:

.net - 适用于 Windows Forms 和 WPF 的商业控制套件 : which can be recommended?

c# - 多线程,如果一个线程崩溃了应用程序会发生什么

c# - ML.NET 回归 FastTree 预测始终返回 0

c# - IServiceProvider 不返回单例实例

c# - 在构造函数中声明的 C# 对象的垃圾收集

c# - servicestack GlobalRequestFilters 请求 Dto 为 null

wcf - .Net 3.5 堆栈的 REST API 有哪些选项

c# - 使用 XDocument 遍历节点的所有属性

c# - xamarin 形成清除选择器选择

c# - Amazon S3 动画 gif - 仅上传第一帧