C#生成和识别二维码
用到外部一个DLL文件(ThoughtWorks.QRCode.dll),看效果
生成截图
识别截图
生成二维码后右键菜单可以保存二维码图片,然后可以到识别模式下进行识别,当然生成后可以用手机扫描识别出来,或者用手机直接扫描以上两张图也能看到识别后的结果。
使用方法,在解决方案中引用上面那个dll文件,引入命名空间
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
看完整的生成二维码代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace 二维码
{
public partial class UC_To : UserControl
{
public UC_To()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() != "")
{
string enCodeString = textBox1.Text;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
pictureBox1.Image = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
}
//else
//MessageBox.Show("请输入内容");
}
private void 保存图片ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (pictureBox1.Image != null)
{
SaveFileDialog s = new SaveFileDialog();
s.Title = "保存二维码图片";
s.Filter = "图片文件(*.jpg)|*.jpg";
if(s.ShowDialog()==DialogResult.OK)
try
{
pictureBox1.Image.Save(s.FileName,System.Drawing.Imaging.ImageFormat.Jpeg);
MessageBox.Show("保存成功");
}
catch { MessageBox.Show("保存失败"); }
}
}
}
}
看完整的识别二维码的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace 二维码
{
public partial class UC_From : UserControl
{
public UC_From()
{
InitializeComponent();
}
string filepath = "";
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog p = new OpenFileDialog();
p.Title = "请选择二维码文件";
p.Filter = "图片文件(*.jpg)|*.jpg";
p.Multiselect = false;
if (p.ShowDialog() == DialogResult.OK)
{
filepath = p.FileName;
System.Threading.Thread t = new System.Threading.Thread(ss);
t.IsBackground = true;
t.Start();
}
}
private void ss()
{
if (filepath != "")
{
string tt = "";
try
{
Invoke((EventHandler)delegate
{
button1.Enabled = false;
button1.Text = "Waiting!";
pictureBox1.Image = new Bitmap(filepath);
});
//pictureBox1.Size = new Size(new Bitmap(filepath).Size.Width, new Bitmap(filepath).Size.Height);
QRCodeDecoder qrDecoder = new QRCodeDecoder();
string txtMsg = qrDecoder.decode(new QRCodeBitmapImage(new Bitmap(pictureBox1.Image)), Encoding.UTF8);
tt = txtMsg;
}
catch { tt = "识别失败"; }
Invoke((EventHandler)delegate
{
textBox1.Text = tt;
button1.Enabled = true;
button1.Text = "识别";
});
}
System.Threading.Thread.CurrentThread.Abort();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
}
}
C#生成和识别二维码的更多相关文章
- python实现树莓派生成并识别二维码
python实现树莓派生成并识别二维码 参考来源:http://blog.csdn.net/Burgess_Liu/article/details/40397803 设备及环境 树莓派2代 官方系统R ...
- 使用ZXing.Net生成与识别二维码(QR Code)
Google ZXing是目前一个常用的基于Java实现的多种格式的1D/2D条码图像处理库,出于其开源的特性其现在已有多平台版本.比如今天要用到的ZXing.Net就是针对微软.Net平台的版本.使 ...
- 在Windows IoT上生成和识别二维码
在Windows IoT生成和识别二维码,实际上由于是UWP上实现,所以,理论上,这些生成和识别二维码的方法也可以在其它平台上运行. 关于二维码的生成有很多库可以实现,比如QRCoder,这个库可以在 ...
- Python3+qrcode+zxing生成和识别二维码教程
一.安装依赖库 pip install qrcode pillow image zxing pillow是python3中PIL的代替库,image是生成图版需要用到的库 安装image时报错“Cou ...
- PHP 生成、识别二维码及安装相关扩展/工具
2018-02-20 00:30:26 更新:推荐新扩展(极力推荐) 这篇文章里用的两个二维码扩展都有些问题和麻烦:phpqrcode(生成二维码)的源码有点小 bug: 而 php-zbarcod ...
- 利用ZXing.Net生成和识别二维码
ZXing.Net:ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库. github:https://github.com/micjahn/ZXing.Net 直接将字符 ...
- ZXing 生成、读取二维码(带logo)
前言 ZXing,一个支持在图像中解码和生成条形码(如二维码.PDF 417.EAN.UPC.Aztec.Data Matrix.Codabar)的库.ZXing(“zebra crossing”)是 ...
- Pyqt+QRcode 生成 识别 二维码
1.生成二维码 python生成二维码是件很简单的事,使用第三方库Python QRCode就可生成二维码,我用Pyqt给QRcode打个壳 一.python-qrcode介绍 python-qrco ...
- HTML5实现扫描识别二维码/生成二维码
扫描识别二维码 思路: 1. 操作摄像头,获取图片.HTML5 WEBRTC的navigator.getUserMedia方法去实时获取摄像头资源. 2. 利用canvas使用相关算法分析图片识别图 ...
随机推荐
- proftpd启动失败提示unable to determine IP address of “xxx.com”
proftpd启动失败提示unable to determine IP address of “xxx.com”这种proftpd启动失败的原因是无法解析后面主机的IP地址,解决方法是在DNS列表中增 ...
- 解决Git在添加ignore文件之前就提交了项目无法再过滤问题
由于未添加ignore文件造成提交的项目很大(包含生成的二进制文件).所以我们可以将编译生成的文件进行过滤,避免添加到版本库中了. 首先为避免冲突需要先同步下远程仓库 $ git pull 在本地项目 ...
- Package 设计3:数据源的提取和使用暂存
SSIS 设计系列: Package设计1:选择数据类型.暂存数据和并发 Package设计2:增量更新 Package 设计3:数据源的提取和使用暂存 在使用SSIS Package处理海量数据时, ...
- stl源码剖析 详细学习笔记deque(3)
protected: typedef simple_alloc<value_type,Alloc> data_allocator; //用来配置元素的alloc typedef simpl ...
- centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)
写个demo来玩一玩linux平台下使用lldb加载sos来调试netcore应用. 当然,在真实的产线环境中需要分析的数据和难度远远高于demo所示,所以demo的作用也仅仅只能起到介绍工具的作用. ...
- Scrapy的日志等级和请求传参
日志等级 日志信息: 使用命令:scrapy crawl 爬虫文件 运行程序时,在终端输出的就是日志信息: 日志信息的种类: ERROR:一般错误: WARNING:警告: INFO:一般的信息: ...
- 借助第八代智能英特尔® 酷睿™ i7 处理器和 Unreal Swarm* 的强大性能快速构建光照
<虚幻竞技场>.<Robo Recall>等游戏的成功与 Unreal Engine 如何处理照明密切相关.原因之一就是静态光映射,但是这需要付出一定的代价:构建照明需要时间, ...
- Shell 基础 -- 流编辑器 sed 详解
一.流编辑器 sed 与命令 sed Linux 中,常使用流编辑器 sed 进行文本替换工作.与常使用的交互式编辑器(如vim)不同,sed 编辑器以批处理的方式来编辑文件,这比交互式编辑器快得多, ...
- LeetCode-51.N皇后
n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 上图为 8 皇后问题的一种解法. 给定一个整数 n,返回所有不同的 n 皇后问题的解决方案. 每一种解 ...
- Daily Scrumming* 2015.12.11(Day 3)
一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明 江昊 任务945 学习使用sass,学习的主要难点在于ruby环境的搭建.sass ...