LeadTools是全球最优秀的图形、图像处理开发包,它可以处理各种格式的文件,并包含所有图形、图像的处理和转换功能,支持图形、图像、多媒体、条形码、OCR、Internet、DICOM等等,具有各种软硬件平台下的开发包,是不可多得优秀软件。LeadTools为“从TWAIN源获取图像”提供了支持。
LeadTools是全球最优秀的图形、图像处理开发包,它可以处理各种格式的文件,并包含所有图形、图像的处理和转换功能,支持图形、图像、多媒体、条形码、OCR、Internet、DICOM等等,具有各种软硬件平台下的开发包,是不可多得优秀软件。LeadTools为“从TWAIN源获取图像”提供了支持。
本博文主要包括:
- TWAIN知识简介
- 创建“从TWAIN源获取图像”应用程序的具体步骤
TWAIN知识简介
TWAIN是一项重要的接口标准,为软件开发商和硬件设备生产厂商之间提供了一个统一的规范,以有效地避免系统及设备之间的不兼容问题。
从硬件到软件,TWAIN包含四层:硬件、源、源管理器和软件。
硬件厂家的TWAIN支持通常体现为支持TWAIN接口的驱动程序。
TWAIN的硬件层接口被称为源,源管理器负责选择和管理来自不同硬件厂家的源。
在微软的Windows上,源管理器是以DLL方式实现。TWAIN软件不直接调用硬件厂家的TWAIN接口,而是通过源管理器。
用户在TWAIN软件中选择获取图像之后,TWAIN软件和硬件通过一系列交涉来决定如何传输数据。软件描述它需要的图像,而硬件描述它能够提供的图像。如果软硬件在图像格式上达成一致,那么控制被传递到源。源现在可以设置扫描选项,以及开始扫描。
创建“从TWAIN源获取图像”应用程序的具体步骤
1. 打开Visual Studio .NET。
2. 点击 文件->新建->项目…。
3. 打开新建项目对话框后,在模板中选择“Visual C#”或“Visual Basic”,随后选择“Windows窗体应用程序”。在名称栏中输入项目名称“Acquiring an Image”,并使用“浏览”按钮选择您工程的存储路径,点击“确定”。
4. 在“解决方案资源管理器”中,右击“引用”,选择“添加引用”。根据当前工程的 Framework 版本和生成目标平台,选择添加相应的LeadTools控件,例如工程中的版本为 Framework 4.0、生成目标平台是 x86,则浏览选择Leadtools For .NET文件夹” LEADTOOLS_INSTALLDIRBinDotNet4Win32”,选择以下的DLL“:
- Leadtools.dll
- Leadtools.Twain.dll
- Leadtools.Codecs.dll
- Leadtools.WinForms.dll
点击“确定”按钮,将以上所有的DLL添加到应用程序中。
将Form1调整到设计视图,在工具箱(视图->工具箱)拖拽一个RasterImageViewer实例至窗体。若您的工具箱没有RasterImageViewer,点击工具->选择工具箱项…。点击浏览从“LEADTOOLS_INSTALLDIRBinDotNet4Win32”中选择Leadtools.WinForms.DLL,点击打开并确定。
6. 切换至Form1的设计视图,从工具箱(视图->工具箱)里拖拽3个RadioButton控件的实例至窗体上,根据以下表格修改属性:
Text | Name | Checked |
---|---|---|
本机 | radioNative | False |
存储器 | radioMemory | False |
文件 | radioFile | False |
7. 从工具箱(视图->工具箱)拖拽4个Button控件的实例至窗体上,根据以下表格修改相关属性:
Text | Name |
---|---|
获取 | buttonAcquire |
选择源 | buttonSelectSource |
保存模板文件 | buttonSaveTemplateFile |
加载模板文件 | buttonLoadTemplateFile |
8. 切换至Form1的代码视图,在文件开始添加以下代码:
[C#] using Leadtools; using Leadtools.Twain; using Leadtools.Codecs; using Leadtools.WinForms;
9. 声明以下私有变量:
[C#] private TwainSession twnSession;
10. 为Form1的Load事件添加事件句柄,并添加以下代码:
[C#] private void Form1_Load(object sender, System.EventArgs e) { try { twnSession = new TwainSession(); twnSession.Startup(this, "manufacturer", "productFamily", "version", "application", TwainStartupFlags.None); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
11. 为Form1的Closing事件添加事件句柄,代码如下:
[C#] private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { twnSession.Shutdown(); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
12. 为twnSession AcquirePage事件添加事件句柄,并添加以下代码:
[C#] private void twnSession_AcquirePage(object sender, TwainAcquirePageEventArgs e) { rasterImageViewer1.Image = e.Image; }
13. 为buttonAcquire Click 事件添加事件句柄,并添加以下代码:
[C#] private void buttonAcquire_Click(object sender, System.EventArgs e) { try { twnSession.AcquirePage += new EventHandler<TwainAcquirePageEventArgs>(twnSession_AcquirePage); twnSession.Acquire(TwainUserInterfaceFlags.Show); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
14. 为buttonSelectSource Click事件添加事件句柄,并添加以下代码:
[C#] private void buttonSelectSource_Click(object sender, System.EventArgs e) { try { twnSession.SelectSource(string.Empty); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
15. 为buttonSaveTemplateFile Click事件添加事件句柄,并添加以下代码:
[C#] private void buttonSaveTemplateFile_Click(object sender, System.EventArgs e) { try { twnSession.SaveTemplateFile(@"c:test.ltt"); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
16. 为buttonLoadTemplateFile Click事件添加事件句柄,并添加以下代码:
[C#] private void buttonLoadTemplateFile_Click(object sender, System.EventArgs e) { try { twnSession.LoadTemplateFile(@"c:test.ltt"); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
17. 为radioNative CheckedChanged事件添加事件句柄,并添加以下代码:
[C#] private void radioNative_CheckedChanged(object sender, System.EventArgs e) { try { TwainCapability capability = new TwainCapability(); capability.Information.ContainerType = TwainContainerType.OneValue; capability.Information.Type = TwainCapabilityType.ImageTransferMechanism; capability.OneValueCapability.ItemType = TwainItemType.Uint16; capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.Native; twnSession.SetCapability(capability, TwainSetCapabilityMode.Set); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
18. 为radioMemory CheckedChanged事件添加事件句柄,代码如下:
[C#] private void radioMemory_CheckedChanged(object sender, System.EventArgs e) { try { TwainCapability capability = new TwainCapability(); capability.Information.ContainerType = TwainContainerType.OneValue; capability.Information.Type = TwainCapabilityType.ImageTransferMechanism; capability.OneValueCapability.ItemType = TwainItemType.Uint16; capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.Memory; twnSession.SetCapability(capability, TwainSetCapabilityMode.Set); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
19. 为radioFile CheckedChanged事件添加事件句柄,代码如下:
[C#] private void radioFile_CheckedChanged(object sender, System.EventArgs e) { try { TwainCapability capability = new TwainCapability(); capability.Information.ContainerType = TwainContainerType.OneValue; capability.Information.Type = TwainCapabilityType.ImageTransferMechanism; capability.OneValueCapability.ItemType = TwainItemType.Uint16; capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.File; twnSession.SetCapability(capability, TwainSetCapabilityMode.Set); } catch (Exception ex) { MessageBox.Show(this, ex.Message); } }
20. 编译并运行程序。
DEMO下载:
Acquiring an Image.rar
文章转自:葡萄城控件产品博客,http://blog.gcpowertools.com.cn
本博文DEMO提供了使用LeadTools从TWAIN源获取图像的全部代码。为了运行Demo代码,请查看并免费下载LeadTools试用版。
如需帮助,请联系在线客服!
标签:图形处理图像处理图像打印图像捕获文档图像扫描与图像
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!