【问题标题】:Using C#/WIA version 2.0 on Vista to Scan在 Vista 上使用 C#/WIA 2.0 版进行扫描
【发布时间】:2010-09-05 18:08:54
【问题描述】:

我想实现一个无纸化归档系统,并希望使用带有 C# 的 WIA 来获取图像。 CodeProject等上有不少样例项目。但是,我找到的每一个都下载后,我遇到了问题。

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

不幸的是,这些示例项目中的每一个似乎都是针对 1.x 进行编码的。该引用以“WIA”而不是“WIALib”的形式出现。我试了一下,只是更改了命名空间导入,但显然 API 完全不同。

是否有任何关于实施 v2.0 或升级这些现有示例项目的信息?

【问题讨论】:

  • 快速提问。你绝对需要WIA吗?或者你能和吐温相处吗?如果吐温没问题,我可能有一些代码要捐赠。

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


【解决方案1】:

要访问 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 Document Imaging)来为您完成所有 OCR。

【讨论】:

  • 我会试一试。我没有搞乱 OCR,因为我还没有看到任何系统在我的东西上足够接近以至于比仅仅做一些像样的元数据和标记更有用。这应该给我大部分我需要的东西,因为一旦它被引用,我可以挖掘API。
  • 您可以使用 System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString("B") 而不是那个神奇的 GUID。
  • 或者您可以使用 Interop.WIA.dll 中定义的 guid。 FormatID.wiaFormatJPEG
  • 如果没有任何有效的 WIA 设备可用,上面的代码将引发异常并显示消息“异常来自 HRESULT:0x80210015”。您可以使用以下命令检查设备: WIA.DeviceManagerClass wiaDM = new DeviceManagerClass(); if (wiaDM == null || wiaDM.DeviceInfos == null || wiaDM.DeviceInfos.Count == 0) // 没有设备
【解决方案2】:

这里还有如何定位 WIA 1.0,以便您可以将您的应用程序发布到 Windows Xp。我拼命寻找的东西! How to develop using WIA 1 under Vista?

【讨论】:

    【解决方案3】:

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

    然后我还用我在互联网上某处找到的代码创建了一个小型库,它还具有扫描多个页面的能力: http://adfwia.codeplex.com/

    【讨论】:

      【解决方案4】:

      它并不需要是 WIA。我主要关注的是 WIA 设置,因为它为不同的扫描仪提供了相同的基本界面。我在这台机器上安装了 3 台扫描仪,它们的 TWAIN 驱动程序/软件都很糟糕(比如在扫描期间挡住了屏幕)。

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

      也就是说,在这里提问是我在转到 TWAIN 之前最后一次尝试弄清楚如何在 WIA 中进行操作的一部分。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2016-05-08
          • 2015-08-24
          • 2014-01-05
          • 2011-10-27
          • 2018-08-06
          • 1970-01-01
          • 2011-04-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多