LeadTools中文入门教程(6):从TWAIN源获取图像

LeadTools是全球最优秀的图形、图像处理开发包,它可以处理各种格式的文件,并包含所有图形、图像的处理和转换功能,支持图形、图像、多媒体、条形码、OCR、Internet、DICOM等等,具有各种软硬件平台下的开发包,是不可多得优秀软件。LeadTools为“从TWAIN源获取图像”提供了支持。本博文主要包括:1 TWAIN知识简介2 创建“从TWAIN源获取图像”应用程序的具体步骤

发布于 2014/09/10 00:00

行业动态


  • LeadTools中文入门教程(1):加载、显示和保存图像 点击进入

  • LeadTools中文入门教程(2):缩放图像 点击进入

  • LeadTools中文入门教程(3):打印图像 点击进入

  • LeadTools中文入门教程(4):使用OCR识别英文 点击进入

  • LeadTools中文入门教程(5):读取和编写条形码 点击进入

  • LeadTools中文入门教程(6):从TWAIN源获取图像 点击进入

  • LeadTools中文入门教程(7):使用OCR识别图像中的中文 点击进入

  • LeadTools中文入门教程(8):使用OCR识别扫描文件中的中文 点击进入

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_INSTALLDIR>\Bin\DotNet4\Win32”,选择以下的DLL“:

  • Leadtools.dll

  • Leadtools.Twain.dll

  • Leadtools.Codecs.dll

  • Leadtools.WinForms.dll

点击“确定”按钮,将以上所有的DLL添加到应用程序中。

5.Form1调整到设计视图,在工具箱(视图->工具箱)拖拽一个RasterImageViewer实例至窗体。若您的工具箱没有RasterImageViewer,点击**工具->选择工具箱项…。点击浏览从“<LEADTOOLS_INSTALLDIR>\Bin\DotNet4\Win32”**中选择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的代码视图,在文件开始添加以下代码:

  1: [C#]
  2:    using Leadtools;
  3:    using Leadtools.Twain;
  4:    using Leadtools.Codecs;
  5:    using Leadtools.WinForms;

9. 声明以下私有变量:

  1: [C#]
  2:    private TwainSession twnSession;

10. 为Form1的Load事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void Form1_Load(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       twnSession = new TwainSession();
  8:       twnSession.Startup(this, "manufacturer", "productFamily", "version", "application", TwainStartupFlags.None);
  9:    }
 10:    catch (Exception ex)
 11:    {
 12:       MessageBox.Show(this, ex.Message);
 13:    }
 14: }

11. 为Form1的Closing事件添加事件句柄,代码如下:

  1: [C#]
  2: private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  3: {
  4:    try
  5:    {
  6:       twnSession.Shutdown();
  7:    }
  8:    catch (Exception ex)
  9:    {
 10:       MessageBox.Show(this, ex.Message);
 11:    }
 12: }

12. 为twnSession AcquirePage事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void twnSession_AcquirePage(object sender, TwainAcquirePageEventArgs e)
  4: {
  5:    rasterImageViewer1.Image = e.Image;
  6: }

13. 为buttonAcquire Click 事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void buttonAcquire_Click(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       twnSession.AcquirePage += new EventHandler<TwainAcquirePageEventArgs>(twnSession_AcquirePage);
  8:       twnSession.Acquire(TwainUserInterfaceFlags.Show);
  9:    }
 10:    catch (Exception ex)
 11:    {
 12:       MessageBox.Show(this, ex.Message);
 13:    }
 14: }

14. 为buttonSelectSource Click事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void buttonSelectSource_Click(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       twnSession.SelectSource(string.Empty);
  8:    }
  9:    catch (Exception ex)
 10:    {
 11:       MessageBox.Show(this, ex.Message);
 12:    }
 13: }

15. 为buttonSaveTemplateFile Click事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void buttonSaveTemplateFile_Click(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       twnSession.SaveTemplateFile(@"c:\test.ltt");
  8:    }
  9:    catch (Exception ex)
 10:    {
 11:       MessageBox.Show(this, ex.Message);
 12:    }
 13: }

16. 为buttonLoadTemplateFile Click事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void buttonLoadTemplateFile_Click(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       twnSession.LoadTemplateFile(@"c:\test.ltt");
  8:    }
  9:    catch (Exception ex)
 10:    {
 11:       MessageBox.Show(this, ex.Message);
 12:    }
 13: }

17. 为radioNative CheckedChanged事件添加事件句柄,并添加以下代码:

  1: [C#]
  2: 
  3: private void radioNative_CheckedChanged(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       TwainCapability capability = new TwainCapability();
  8:       capability.Information.ContainerType = TwainContainerType.OneValue;
  9:       capability.Information.Type = TwainCapabilityType.ImageTransferMechanism;
 10:       capability.OneValueCapability.ItemType = TwainItemType.Uint16;
 11:       capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.Native;
 12:       twnSession.SetCapability(capability, TwainSetCapabilityMode.Set);
 13:    }
 14:    catch (Exception ex)
 15:    {
 16:       MessageBox.Show(this, ex.Message);
 17:    }
 18: }

18. 为radioMemory CheckedChanged事件添加事件句柄,代码如下:

  1: [C#]
  2: 
  3: private void radioMemory_CheckedChanged(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       TwainCapability capability = new TwainCapability();
  8:       capability.Information.ContainerType = TwainContainerType.OneValue;
  9:       capability.Information.Type = TwainCapabilityType.ImageTransferMechanism;
 10:       capability.OneValueCapability.ItemType = TwainItemType.Uint16;
 11:       capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.Memory;
 12:       twnSession.SetCapability(capability, TwainSetCapabilityMode.Set);
 13:    }
 14:    catch (Exception ex)
 15:    {
 16:       MessageBox.Show(this, ex.Message);
 17:    }
 18: }

19. 为radioFile CheckedChanged事件添加事件句柄,代码如下:

  1: [C#]
  2: 
  3: private void radioFile_CheckedChanged(object sender, System.EventArgs e)
  4: {
  5:    try
  6:    {
  7:       TwainCapability capability = new TwainCapability();
  8:       capability.Information.ContainerType = TwainContainerType.OneValue;
  9:       capability.Information.Type = TwainCapabilityType.ImageTransferMechanism;
 10:       capability.OneValueCapability.ItemType = TwainItemType.Uint16;
 11:       capability.OneValueCapability.Value = (UInt16)TwainTransferMechanism.File;
 12:       twnSession.SetCapability(capability, TwainSetCapabilityMode.Set);
 13:    }
 14:    catch (Exception ex)
 15:    {
 16:       MessageBox.Show(this, ex.Message);
 17:    }
 18: }

20. 编译并运行程序。

DEMO下载:


Acquiring an Image.rar


本博文DEMO提供了使用LeadTools从TWAIN源获取图像的全部代码。为了运行Demo代码,你需要下载LeadTools全功能试用版


LeadTools试用版下载


了解LeadTools产品更多特性


若您在使用LeadTools的过程中遇到任何问题,欢迎在葡萄城开发者社区LeadTools板块提问,我们的专业技术团队期待您的到来!


点击查看更多LeadTools使用教程、博文

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

活字格低代码二维码

关注“活字格低代码”

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态