调用扫描仪的方案

近期由于项目需求,简单研究了一下客户端调用扫描仪的问题,总结了一下,大概有以下几种方式: 
(1)TWAIN 
       TWAIN指TWAIN协议,全称Toolkit Without An Interesting Name,无注名工具包协议,是应用软件从计算机外设获取静态图像的国际标准。 
       TWAIN是一项重要的接口标准,为软件开发商和硬件设备生产厂商之间提供了一个统一的规范,以有效地避免系统及设备之间的不兼容问题。TWAIN协议为操作系统提供了软件支持,使得符合TWAIN协议的软件通过调用TWAIN协议接口就能从兼容TWAIN协议的外设上获取静态图像,而不必考虑外设的功能差别。 
TWAIN共包括4个二进制文件。如果要使用该接口,就必须要保证他们被成功地安装在本地计算机上。如下: 
TWAIN_32.DLL 
TWAIN.DLL 
TWUNKER_32.EXE 
TWUNKER_16.EXE 
在Windows 操作系统中,Microsoft已经把这些文件作为系统文件随同操作系统一起发布了。可以在Windows安装目录中查找到这些文件。通过TWAIN提供的头文件(twain.h),可以实现扫描功能。

        存在问题:由于twain标准只是推荐标准,不是强制的标准;因此,有些扫描仪厂家在实现twain接口时通常不是严格按照twain规范进行,而只是部分遵守。这就导致了基于TWAIN标准实现的扫描仪调用应用接口在调用一些扫描仪时可能无法正常工作。

(2)Kodakimg 
       映像KODAKIMG.EXE是Windows 95/ 98/NT 和 Windows 2000中用于图像扫描、浏览和编辑的附件程序(在WINDOWS安装过程中是可选的),分为自由版和专业版(需另外购买)。在Windows的安装过程中,4个OCX Kodak控件(Kodak图像编辑控件、Kodak图像管理控件、Kodak图像扫描控件及Kodak图像缩略图控件)随着自由版映像程序的安装也被一同安装。这四个控件被允许用于任何的Windows开发工具中来开发与图像有关的软件产品。当然,自由版的映像程序限制并隐藏了这四个控件的一些属性和方法;比如,编辑控件的DeSpeckle方法仅限于结合专业版的映像程序使用。

       另外值得一提的是,专业版的映像程序通过引入新的图像OCR控件提供了扩展的图像处理能力。还有,Windows映像程序并没有随着Windows ME及Windows XP一同分发。在新的系统中,微软想以“图像与电传浏览程序”和“扫描仪与相机向导”取而代之。要在新系统上使用Windows映像程序,必须另行购买Windows映像程序专业版本;但如果从Windows 2000系统升级到XP,依然有映像程序及四个控件可用。 

(3)Dynamic TWAIN ActiveX 
       Dynamic TWAIN ActiveX 控件可以使得你能从任何 TWAIN 兼容的设备获取图象。它有着精心设计的界面,以及内建的向导模式, Dynamic TWAIN 使用起来很简单。你可以在若干代码间做典型的 TWAIN 工作。同时, Dynamic TWAIN 功能很强大。它和 TWAIN V1.9规范兼容,内建了 TIFF 和 JPEG 的编解码器。它还支持所有的三种图象格式的转换以及其他的特性。通过 Dynamic TWAIN ActiveX 控件,如果有 TWAIN 驱动器的话,你可以操作扫描仪、数字相机或捕捉卡。更高端的获取功能使得能更容易使用它,就算条件再苛刻,低端的功能也能让我们操作更弹性更易用。 

(4)WIA 
 Windows 图像采集 (WIA) 是最新 imaging 技术,在Microsoft Windows Millennium Edition中引入, 包含在更高版本的 MicrosoftWindows 操作系统中(例如WindowsXP,注意Windows2000不支持WIA)。 WIA 提供广泛的支持以启用 imaging 设备, 如扫描仪和数码相机, 以与图像应用程序 (例如, McrosoftPicture2000和 Adobe Photoshop)对接。 
  WIA之前的成像设备行业标准是TWAIN标准。 
  使用WIA,制造商只需要写 WIA microdriver 以允许设备使用。 这类似于打印制造商提供 minidriver, 而其他WIA组件由操作系统实现。 
  使用WIA, 独立硬件供应商 (IHV) 可集中编写代码以提高设备功能。

      WIA和TWAIN的关系是,WIA是微软操作系统的影像获取体系结构,属于Windows操作系统驱动程序类;而TWAIN是开放协议,用来解决应用软件对不同影像外设的可移植性调用。应当说,WIA是驱动层上的东西,它为应用程序提供SDK接口;而TWAIN协议在驱动程序和应用程序间提供一个公用接口。TWAIN的层次高于WIA。

posted @ 2012-07-05 12:52  Peter.Luo  阅读(1730)  评论(0编辑  收藏  举报