C#使用Twain协议开发一个高扫仪对接功能

 更新时间:2024年02月03日 09:31:12   作者:搬砖的诗人Z  
这篇文章主要为大家详细介绍了C#如何使用Twain协议开发一个高扫仪对接功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

请先安装TwainDotNet

实现代码

        private static AreaSettings AreaSettings = new AreaSettings(Units.Centimeters, 0.1f, 5.7f, 0.1F + 2.6f, 5.7f + 2.6f);

        Twain _twain;
        ScanSettings _settings;

  public ScanForm(string tName, string cNumber, List<string> names, CaseSelectForm form)
  {
      InitializeComponent();

      try
      {
          SelectForm = form;

          this.DoubleBuffered = true;//设置本窗体
          SetStyle(ControlStyles.UserPaint, true);
          SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
          SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

          myNames = names;
          _typeName = tName;
          _caseNumber = cNumber;
          this.Text = "扫描文件 - " + tName + " - " + cNumber;

          _twain = new Twain(new WinFormsWindowMessageHook(this));
          _twain.TransferImage += delegate (Object sender, TransferImageEventArgs args)
          {
              if (args.Image != null)
              {
                  Bitmap image = new Bitmap(args.Image);

                  string temp = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".jpg";
                  //缓存图片到磁盘
                  string path = tempPath + temp;
                  image.Save(path, ImageFormat.Jpeg);
                  tempPicUrl.Add(path);

                  var resizeImg = ImageHelper.KiResizeImage(image, 0.2f);
                  //缓存图片到磁盘
                  string path2 = resizePath + temp;
                  resizeImg.Save(path2, ImageFormat.Jpeg);

                  //scanImages.Add(image);
                  imageList1.Images.Add(image);

                  image.Dispose();
              }
              args.Image.Dispose();
          };
          _twain.ScanningComplete += delegate
          {
              for (int i = LastScanCount; i < imageList1.Images.Count; i++)
              {
                  ListViewItem li = new ListViewItem();

                  li.Text = i.ToString();
                  li.ImageIndex = i;
                  mlistview_Image.Items.Add(li);
                  ImageStateModels.Add(new ImageStateModel
                  {
                      Checked = false,
                      Person = "无",
                      tempPicUrl = tempPicUrl[i],
                      Name = i.ToString()
                  });
              }
              LastScanCount = ImageStateModels.Count;
              mlbl_PageCount.Text = string.Format("本次扫描 {0} 页", ImageStateModels.Count);
              Enabled = true;
              this.Activate();
              this.WindowState = FormWindowState.Maximized;
          };
          // ocr = new TesseractEngine("./tessdata", "chi_sim");

          InitInfo();
          InitCut();
          InitSearch();
          InitWords();
          DeleteFileByDir();
          InitMatchImg();
      }
      catch (Exception ex)
      {
          log4netHelper.Error("---报错方法--ScanForm");
          log4netHelper.Error(ex.Message);
          log4netHelper.Error(ex.StackTrace);
          log4netHelper.Error(ex.ToString());
          log4netHelper.Error("---end---");
          MessageBox.Show("请检查设备是否开启或者链接!");
      }
  }
   private void Init()
   {
       try
       {
           mcb_userName.DataSource = myNames;

           mtbPage_Set.SelectedIndex = 0;

           string savetype = ConfigHelper.ReadConfigPath("savetype.txt");
           if (savetype.Trim() == "1")
           {
               mcBox_savetype.Text = ".jpg";
           }
           else if (savetype.Trim() == "0")
           {
               mcBox_savetype.Text = ".PDF";
           }
           _saveType = savetype;
       }
       catch (Exception ex)
       {
           log4netHelper.Error("---报错方法--Init");
           log4netHelper.Error(ex.Message);
           log4netHelper.Error(ex.StackTrace);
           log4netHelper.Error(ex.ToString());
           log4netHelper.Error("---end---");
       }
   }

到此这篇关于C#使用Twain协议开发一个高扫仪对接功能的文章就介绍到这了,更多相关C# Twain开发高扫仪对接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中判断某类型是否可以进行隐式类型转换

    C#中判断某类型是否可以进行隐式类型转换

    在我们采用反射动态调用一些方法时,常常涉及到类型的转换,直接判断类型是否相符有时不能判断调用方法是否合适
    2013-04-04
  • 使用Linq注意事项避免报错的方法

    使用Linq注意事项避免报错的方法

    这篇文章主要介绍了使用Linq注意事项避免报错的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • C#创建自定义控件的示例

    C#创建自定义控件的示例

    这篇文章主要介绍了C#创建自定义控件的示例,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-10-10
  • C# .NET创建虚拟目录的方法详解

    C# .NET创建虚拟目录的方法详解

    虚拟目录(virtual directory),计算机术语,每个 Internet服务可以从多个目录中发布。本文将为大家介绍如何通过C# asp.net mvc 创建虚拟目录,感兴趣的可以了解一下
    2022-01-01
  • C#调用打印机实现打印

    C#调用打印机实现打印

    这篇文章介绍了C#调用打印机实现打印的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#编写发送邮件组件

    C#编写发送邮件组件

    本文给大家分享的是使用C#编写的发送邮件的组件,非常的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • C#遍历删除字符串中重复字符

    C#遍历删除字符串中重复字符

    这篇文章主要介绍了C#遍历删除字符串中重复字符的方法,涉及C#遍历字符串的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#基础语法:方法参数详解

    C#基础语法:方法参数详解

    这篇文章主要介绍了C#基础语法:方法参数详解,本文讲解了值参数、引用参数、输出参数、参数数组等参数类型,并分别给出代码实例,需要的朋友可以参考下
    2015-06-06
  • C#检测远程计算机端口是否打开的方法

    C#检测远程计算机端口是否打开的方法

    这篇文章主要介绍了C#检测远程计算机端口是否打开的方法,实例分析了C#实现检测远程端口开启的技巧,需要的朋友可以参考下
    2015-03-03
  • .net与javascript脚本的交互方法总结

    .net与javascript脚本的交互方法总结

    这篇文章主要介绍了.net与javascript脚本的交互方法,实例讲述了.net访问javascript的方法与javascript访问.net的方法,非常具有实用价值,需要的朋友可以参考下
    2014-10-10

最新评论