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#使用XSLT实现xsl、xml与html相互转换

    C#使用XSLT实现xsl、xml与html相互转换

    这篇文章介绍了C#使用XSLT实现xsl、xml与html相互转换的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • c#多线程之线程基础

    c#多线程之线程基础

    本文详细讲解了c#多线程之线程基础,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • Unity ScrollView实现自动吸附效果

    Unity ScrollView实现自动吸附效果

    这篇文章主要为大家详细介绍了Unity ScrollView实现自动吸附效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C#实现查杀本地与远程进程的方法

    C#实现查杀本地与远程进程的方法

    这篇文章主要介绍了C#实现查杀本地与远程进程的方法,可实现针对特定进程的关闭操作,是C#进程操作的一个典型应用,需要的朋友可以参考下
    2014-12-12
  • C#二维码图片识别代码

    C#二维码图片识别代码

    这篇文章主要为大家详细介绍了C#二维码图片识别代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C#连接mysql的方法【基于vs2010】

    C#连接mysql的方法【基于vs2010】

    这篇文章主要介绍了C#连接mysql的方法,基于vs2010平台较为详细的讲述了C#操作mysql所需的组件下载、安装及连接mysql操作实现代码,需要的朋友可以参考下
    2017-03-03
  • WPF实现列表分页控件的示例代码

    WPF实现列表分页控件的示例代码

    这篇文章主要为大家详细介绍了如何利用WPF实现列表分页控件,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2022-10-10
  • C#并发实战记录之Parallel.ForEach使用

    C#并发实战记录之Parallel.ForEach使用

    这篇文章主要给大家介绍了关于C#并发实战记录之Parallel.ForEach使用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • C#使用正则表达式实现汉字转拼音

    C#使用正则表达式实现汉字转拼音

    这篇文章主要为大家详细介绍了C#如何使用正则表达式实现汉字转拼音的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C#使用对象序列化类库MessasgePack

    C#使用对象序列化类库MessasgePack

    这篇文章介绍了C#使用对象序列化类库MessasgePack的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论