从 twain 设备中扫描图像

从 twain 设备中扫描图像

ID:6085274

大小:89.00 KB

页数:15页

时间:2018-01-02

从 twain 设备中扫描图像_第1页
从 twain 设备中扫描图像_第2页
从 twain 设备中扫描图像_第3页
从 twain 设备中扫描图像_第4页
从 twain 设备中扫描图像_第5页
资源描述:

《从 twain 设备中扫描图像》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、简介TWAIN数据源管理程序(DSM)工业标准的软件库,用于从静态图像设备提取图像。绝大部分的扫描仪和数码相机都提供了TWAIN驱动程序,利用统一的TWAIN接口,应用程序可以非常方便地从这些设备中获取图像。二、使用步骤互联网上关于TWAIN编程的中文资料很少,代码更是难找到,因为我不得不仔细阅读了 http://www.twain.org/ 提供的TWAINSpecification。下面说说使用TWAIN接口获取图像的简要步骤。 Windows系统中存在一个TWAIN_32.dll,所有的TWAIN操作都是通过这个DLL导出的DSM_Entry函数

2、来实现的(说实在话,我个人觉得TWAIN接口设计得太差了,看看MS的WIA,逻辑上非常清晰)。这个函数的声明如下: TW_UINT16FARPASCALDSM_Entry(pTW_IDENTITYpOrigin,//SourceofmessagepTW_IDENTITYpDest,//DestinationofmessageTW_UINT32DG,//DatagroupID:DG_xxxxTW_UINT16DAT,//Dataargumenttype:DAT_xxxxTW_UINT16MSG,//MessageID:MSG_xxxxTW_MEMREFpDa

3、ta//Pointertodata); 1.打开DSM(DataSourceManager:数据源管理器) TWAIN是一个数据源管理程序,应用程序首先要使用MSG_OPENDSM消息,打开数据源管理器。这里需要指定一个窗口句柄,应用程序应该在此窗口的消息循环中处理TWAIN消息(MSG_PROCESSEVENT)。 2.选择DS(DataSource:数据源) 因为一个系统中可能存在多个TWAIN设备,因此必须选择一个数据源。选择数据源通常有两种方式:选择默认数据源(MSG_GETDEFAULT)和显示选择数据源对话框,由用户来选择数据源(MSG_USE

4、RSELECT)。 3.打开DS 使用MSG_OPENDS消息打开数据源。 4.设置参数 消息为MSG_SET,设置各种参数,如获取方式、图像数量等。有些参数由设备驱动支持才有效。 5.显示扫描界面 使用MSG_ENABLEDS消息,显示设备驱动提供的用户界面(UI)。 6.获取图像 如果用户选择扫描什么的,可以在窗口的消息循环中获取到这个事件(MSG_XFERREADY)。此时,应用程序可以通过DAT_SETUPFILEXFER设置文件名,然后用DAT_IMAGEFILEXFER获取图像到文件中。 7.关闭扫描界面 在窗口的消息循环中获取到MSG_CLO

5、SEDSREQ或MSG_CLOSEDSOK消息,可以关闭扫描界面(MSG_DISABLEDS)。 8.关闭DS 消息为MSG_CLOSEDS。 9.关闭数据源消息为MSG_CLOSEDSM。 三、CTwainHelper助手类为了使用方便,我写了一个静态TWAIN助手类CTwainHelper。使用CTwainHelper的五个函数,就可以简单地从TWAIN设备获取图像到文件中。使用方法如下:1.调用CTwainHelper::Initialize()确定是否有可用的设备。2.在窗口消息循环中,调用CTwainHelper::ProcessMessage(

6、)处理TWAIN消息。3.要获取图像时,调用CTwainHelper::GetImage()。1.如果图像已准备好(如用户确定扫描图像),窗口会收到WM_COMMAND消息,wParam为IDC_TwainHelper。此时应用程序可以调用CTwainHelper::TransferImage()获取图像到文件中。具体使用方法请参看示例代码。CTwainHelper可以在VisualC++6.x/7.x工程中使用,支持UNICODE编译。因为是静态类,要改写成C代码只需要做一点点少量的工作。四、后话当然,上面只是一种常用的步骤。其实应用程序完全可以自定义所

7、有的步骤,比如不使用TWAIN驱动提供扫描对话框而直接扫描,或者扫描图像到内存中等等。详细情况请参考TWAINSpecification,步骤大同小异,消息和参数千差万别,仔细看看应该很容易的。如果没有TWAIN设备又要进行TWAIN程序开发,可以到TWAIN官方网站下载TWAINDevelopersToolkit,安装后会有一个虚拟的TWAIN设备。不过应用程序在这个虚拟TWAIN设备中正常工作,不代表一定能在实际的TWAIN设备正常使用,这点需要注意。以前CTwainHelper就碰到过这样的情况在虚拟TWAIN设备中明明是好的,在我的扫描仪上却不能扫

8、描图像。检查后发现,原来设置了不支持的参数。最后,TWAIN是Te

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。