@Tomato

c# 这里以winform为例,窗体内拉入,textBox1、button1、button2、pictureBox1 4个控件

文章目录

  • 1、引用包
  • 2、生成二维码
  • 3、识别二维码

1、引用包

引用NuGet

  1. ThoughtWorks (如果一张图片中有多个二维码或者没有二维码 读取会出错 会进入catch)
  2. ZXing (把图片中的所有二维码的内容读取出来)

2、生成二维码

String --> QrCodeImg

if (textBox1.Text.Trim() != "")
{string enCodeString = textBox1.Text;QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();pictureBox1.Image = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
}

3、识别二维码

文件URL --> String

private string filepath = "";
private void button1_Click(object sender, EventArgs e)
{OpenFileDialog p = new OpenFileDialog();p.Title = "请选择二维码文件";p.Filter = "图片文件(*.jpg,*.png)|*.jpg;*.png";p.Multiselect = false;if (p.ShowDialog() == DialogResult.OK){filepath = p.FileName;//System.Threading.Thread t = new System.Threading.Thread(ThoughtWorks);System.Threading.Thread t = new System.Threading.Thread(ZXing);t.IsBackground = true;t.Start();}}/// <summary>
/// 会把图片中的所有二维码的内容读取出来
/// </summary>
private void ZXing()
{string tt = "";try{using (FileStream fs = new FileStream(filepath, FileMode.Open)){QRCodeMultiReader qc = new QRCodeMultiReader();Image image = Image.FromStream(fs);Bitmap bitmap = new Bitmap(image);LuminanceSource source = new BitmapLuminanceSource(bitmap);BinaryBitmap binarybitmap = new BinaryBitmap(new HybridBinarizer(source));IDictionary<DecodeHintType, object> hints = new Dictionary<DecodeHintType,object>();hints.Add(DecodeHintType.CHARACTER_SET, "UTF-8");hints.Add(DecodeHintType.TRY_HARDER, "3");Result[] r = qc.decodeMultiple(binarybitmap, hints);List<string> resultList = r.Select(a => a.Text).ToList();foreach (string item in resultList){tt += item + ",";}}}catch (Exception ex){tt = "识别失败--" + ex.Message;}Invoke((EventHandler)delegate{textBox1.Text = tt;button1.Enabled = true;button1.Text = "识别";});System.Threading.Thread.CurrentThread.Abort();
}/// <summary>
/// 如果一张图片中有多个二维码或者没有二维码 读取会出错 会进入catch
/// </summary>
private void ThoughtWorks()
{if (filepath != ""){string tt = "";try{Invoke((EventHandler)delegate{button1.Enabled = false;button1.Text = "Waiting!";pictureBox1.Image = new Bitmap(filepath);});QRCodeDecoder qrDecoder = new QRCodeDecoder();string txtMsg = qrDecoder.decode(new QRCodeBitmapImage(new Bitma(pictureBox1.Image)), Encoding.UTF8);tt = txtMsg;}catch (Exception ex){tt = "识别失败--" + ex.Message;}Invoke((EventHandler)delegate{textBox1.Text = tt;button1.Enabled = true;button1.Text = "识别";});}System.Threading.Thread.CurrentThread.Abort();
}

c# 生成、识别二维码相关推荐

  1. python实现二维码识别软件_用 Python 生成 识别二维码

    说到二维码大家一定不陌生,可以说现在二维码几乎渗透到了我们生活的各个角落,举例来说吧,我们到超市商场购物时扫描二维码付款,我们出行时乘坐公交地铁扫描二维码进站,我们到菜鸟驿站取件时扫描二维码取件,如果 ...

  2. Python生成+识别二维码

    二维码(QR Code),使用平面图案存储信息,根据白0黑1的算机内部逻辑,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理,记录好所有数 ...

  3. C# 生成和识别二维码

    生成和识别二维码 本来认为这功能在网上一搜一大堆,结果确实如此.但没有一个能用的,要么就是要收费,要么不能使用. 于是乎一顿搜索,经测试代码稳定,无论是纯二维码还是复杂图像嵌入二维码,均可识别 文章目 ...

  4. qrcode方法生成的二维码安卓手机长按不识别

    qrcode生成的二维码,在苹果等手机上长按可识别,在华为手机上长按没有反应,截图保存下来长按又可以识别. #问题原因 浏览器兼容问题 qrcode在页面生成二维码时,会生成一个canvas标签和一个 ...

  5. Flutter - 生成二维码与识别二维码

    #生成二维码 ##首先需要在pubspec.yaml:中添加 qr_flutter: ^1.1.3 其次,引入代码: import 'package:qr_flutter/qr_flutter.dar ...

  6. java生成和识别二维码

    全栈工程师开发手册 (作者:栾鹏) java教程全解 本文使用两种方式生成和识别二维码. 方法1:使用日本公司的qrcode 需要引入的包 qrcode_swetake.jar qrcode.jar ...

  7. HTML5实现扫描识别二维码/生成二维码

    扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源.  2. 利用canvas使用相关算法分析图片识别图 ...

  8. 生成二维码及微信长按识别二维码

    参考网友文档: js生成二维码及解决二维码在微信中不能识别 来自 https://blog.csdn.net/qq_41429765/article/details/111915775?ops_req ...

  9. HTML5 实现扫描识别二维码 生成二维码

    扫描识别二维码 思路 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源.  2. 利用canvas使用相关算法分析图片识别图片 ...

  10. 微信小程序文字链接生成二维码,扫描识别二维码

    给大家推荐一个非常实用且有趣的微信小程序:超实用工具箱. 超实用工具箱小程序里面包含了很多小工具,涵盖了工作.日常生活和娱乐版块.具体的功能大家可以打开微信扫描下方二维码,即刻体验: 接下来给大家介绍 ...

最新文章

  1. Windows7下OpenGL简单使用举例
  2. 省高校计算机等级考试二级,湖南省高校计算机等级考试二级考试0810.ppt
  3. 从VMware ESX Server 4升级到ESXi 5
  4. hdu 1044 BFS(压缩图)+DFS
  5. DevExpress WinForms使用教程:图表控件 - 内置深入查询
  6. UDP和TCP协议包大小的计算-转
  7. 小学奥数 7834 分成互质组 python
  8. 最近总是淡淡的····
  9. 详述SaltStack Salt 命令注入漏洞(CVE-2020-16846/25592)
  10. Spring之RMI 远程方法调用 (Remote Method Invocation)
  11. 0x07 MySQL 多表查询
  12. 【密码学】基于 SM3 算法的 HMAC 快速实现
  13. python 圆周率_圆周率 python
  14. 我原来的chinaunix博客地址
  15. 怎么给PDF删除其中一页,PDF删除其中一页的方法
  16. 【报告分享】汽车数字营销新度量衡-懂车帝(附下载)
  17. 电脑突然关机重启是什么原因?
  18. 戴愫-有效提升与陌生人的社交能力
  19. 冒泡排序和纯指针的冒泡排序
  20. 维基解密:攻击 Mac/Linux 的CIA三款工具

热门文章

  1. 怎么提高员工的信息安全意识????
  2. 身价过亿的帝都富豪对小码农说预处理学的不错
  3. 我怎么到了个这样的公司,分分钟想辞职
  4. 记录一下reids连接超时,无法访问6379端口的问题
  5. 搜索技术之--以图搜图
  6. 12个实用的Word、PDF文档搜索引擎
  7. Eth 03 -以太网驱动Eth的配置
  8. “意见反馈”DEMO
  9. 美剧 迷失 最强剧情解释
  10. arcgis导入excel Failed to connect to database.没有注册类