当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Vista上使用C#/WIA2.0版进行扫描》经验,为你挑选了1个好方法。

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

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

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

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



1> Paul Jenkins..:

要访问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的关于WIA的Coding4Fun文章确实包含了关于如何为多个页面执行此操作的更多信息,我认为(我还要比自己更进一步)

如果它用于无纸化办公系统,您可能还需要查看MODI(Office Document Imaging)来为您执行所有OCR.


您可以使用System.Drawing.Imaging.ImageFormat.Jpeg.Guid.ToString("B")代替那个神奇的GUID.
或者您可以使用Interop.WIA.dll中定义的guid.FormatID.wiaFormatJPEG
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有