C# 利用QRCode生成二维码图片
网上生成二维码的组件是真多,可是真正好用的,并且生成速度很快的没几个,QRCode就是我在众多中找到的,它的生成速度快。但是网上关于它的使用说明,真的太少了,大都是千篇一律的复制粘贴。这是本要用它做了一个项目后,简单的整理了一下。
组件下载地址:http://download.csdn.net/detail/lybwwp/6861821
下载文件包包含ThoughtWorks.QRCode.dll与dll的源码,强人可修改些源码。
字符串较长的情况下,用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误。
解决方法:将 QRCodeVersion 改为0。
此代码功能:批量生成二维码图片保存到指定文件夹中(此图片可保存,可指定图片格式和图片大小)。
引用空间 ThoughtWorks.QRCode.dll
using ThoughtWorks.QRCode.Codec;
- #region 二维码生成
- /// <summary>
- /// 批量生成二维码图片
- /// </summary>
- private void Create_CodeImages()
- {
- try
- {
- if (myDataSet != null)
- {
- if (myDataSet.Tables[0].Rows.Count > 0)
- {
- //清空目录
- DeleteDir(currentPath);
- foreach (DataRow dr in myDataSet.Tables[0].Rows)
- {
- if (dr[2] != null)
- {
- //生成图片
- Bitmap image = Create_ImgCode(dr[2].ToString(), imgSize);
- //保存图片
- SaveImg(currentPath, image);
- }
- }
- //打开文件夹
- Open_File(currentPath);
- myDataSet = null;
- return;
- }
- }
- }
- catch(Exception ex) {
- MessageBox.Show(ex.ToString (), "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- //程序路径
- readonly string currentPath = Application.StartupPath + @"\BarCode_Images";
- /// <summary>
- /// 保存图片
- /// </summary>
- /// <param name="strPath">保存路径</param>
- /// <param name="img">图片</param>
- public void SaveImg(string strPath, Bitmap img)
- {
- //保存图片到目录
- if (Directory.Exists(strPath))
- {
- //文件名称
- string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png";
- img.Save(strPath + "/" + guid, System.Drawing.Imaging.ImageFormat.Png);
- }
- else
- {
- //当前目录不存在,则创建
- Directory.CreateDirectory(strPath);
- }
- }
- /// <summary>
- /// 生成二维码图片
- /// </summary>
- /// <param name="codeNumber">要生成二维码的字符串</param>
- /// <param name="size">大小尺寸</param>
- /// <returns>二维码图片</returns>
- public Bitmap Create_ImgCode(string codeNumber, int size)
- {
- //创建二维码生成类
- QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
- //设置编码模式
- qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
- //设置编码测量度
- qrCodeEncoder.QRCodeScale = size;
- //设置编码版本
- qrCodeEncoder.QRCodeVersion = 0;
- //设置编码错误纠正
- qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
- //生成二维码图片
- System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber);
- return image;
- }
- /// <summary>
- /// /打开指定目录
- /// </summary>
- /// <param name="path"></param>
- public void Open_File(string path)
- {
- System.Diagnostics.Process.Start("explorer.exe", path);
- }
- /// <summary>
- /// 删除目录下所有文件
- /// </summary>
- /// <param name="aimPath">路径</param>
- public void DeleteDir(string aimPath)
- {
- try
- {
- //目录是否存在
- if (Directory.Exists(aimPath))
- {
- // 检查目标目录是否以目录分割字符结束如果不是则添加之
- if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
- aimPath += Path.DirectorySeparatorChar;
- // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
- // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
- string[] fileList = Directory.GetFiles(aimPath);
- //string[] fileList = Directory.GetFileSystemEntries(aimPath);
- // 遍历所有的文件和目录
- foreach (string file in fileList)
- {
- // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
- if (Directory.Exists(file))
- {
- DeleteDir(aimPath + Path.GetFileName(file));
- }
- // 否则直接Delete文件
- else
- {
- File.Delete(aimPath + Path.GetFileName(file));
- }
- }
- }
- }
- catch (Exception e)
- {
- throw e;
- }
- }
- #endregion
C# 利用QRCode生成二维码图片的更多相关文章
- qrCode生成二维码图片
QRCode.js 是一个用于生成二维码图片的插件. 1.文件脚本 var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,th ...
- asp.net(C#)利用QRCode生成二维码---.NET菜鸟的成长之路
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...
- asp.net(C#)利用QRCode生成二维码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...
- Vue前端利用qrcode生成二维码
<div id="qrcode" style="width: 560px;height: 560px;background-color: white;"& ...
- asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像
<%@ WebHandler Language="C#" Class="GetQRCode" %> using System; using Syst ...
- 小程序canvas生成二维码图片踩的坑
1:生成临时图片,保证画布被加载以及渲染(即本身不可以 hidden 或是 上级元素不可以 hidden 或是 wx:if 隐藏等) == > 建议:因为 canvas 的组件层级(z-inde ...
- 如何利用ThoughtWorks.QRCode 生成二维码
1.引用ThoughtWorks.QRCode.dll 在nuget上查找即可引用,也可自行下载 2.生成二维码静态方法 参数: 二维码内容:fileUrl 二维码图片名:typeName #regi ...
- C#Qrcode生成二维码支持中文,带图片,带文字
C#Qrcode生成二维码支持中文带图片的操作请看二楼的帖子,当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/2057 ...
- vue2.0生成二维码图片并且下载图片到本地兼容写法
vue生成二维码图片,这里使用的是qrcode.js 这个插件(亲测写法,兼容没有问题) 第一步,下载插件 需要注意,这里下载的是qrcodejs2 cnpm install --save qrcod ...
随机推荐
- 【读书笔记】iOS-引用计数
Cocoa采用了一种称为引用计数的技术,有时也叫做保留计数.每个对象有一个与之相关联的整数,称作它的引用计数器或保留计数器.当某段代码需要访问一个对象时,该代码将该对象的保留计数器值加1,表示“我要访 ...
- HTML5 -1- 简介
在介绍HTML5之前我们应该先了解一下HTML5 我想从下面开始简单了解一下HTML5 什么是HTML5??? HTML5 即HTML 5.0 版本 正式制定时间是在2014年 遵循着移动先行(前四个 ...
- 深入理解Linux字符设备驱动
文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解.本文整合之前发表的& ...
- 谷歌浏览器Chrome安装,报0x80004002 等错误时,乖乖的这么解决!亲测有效。
1.卸载现有的谷歌浏览器,推荐使用360卸载(最好清扫残留文件) 2.在百度搜索中下载一个离线的 chrome浏览器(准备在安全模式先安装),记住,一定不能是谷歌官网的离线包(我屡次尝试安装官方离线包 ...
- (传输层)UDP协议
目录 数据单位特点具体实现要求UDP首部格式发送UDP请求的客户端图释 数据单位 UDP 传送的数据单位协议是 UDP 报文或用户数据报 特点 UDP 是无连接的,即发送数据之前不需要建立连接 UDP ...
- linux把EDT时间修改为CST格式
初始时间:2012年 09月 14日 星期五 18:15:33 EDT [root@test ~]# mv /etc/localtime /etc/localtime.bak [root@test ~ ...
- rails关于utf8问题-------------------utf8申明必须置顶
utf-8必须置顶,如果放在其他位置,会导致后面如果遇到中文无法解析,然后报其他乱七八糟的错误,比如不能连接数据库,比如语法错误......这种错误不好找,切记!!! 出错代码: #!/bin/env ...
- mysql连接其他表删除某个表的数据
delete a from TableA a left join TableB b on a.XX = b.YY left join TableC c on c.ZZ = a.XX where 条件
- 进制,原码VS补码
进制 十,八,十六进制=>二进制 十进制=>二进制:辗转相除取余,10除2商5余0,5除2商2余1,2除2商1余0,1除2商0余1,So,10d=1010b 八进制=>二进制:每1位 ...
- Linux 系统常用命令汇总(一) 文件和目录操作
文件和目录 命令 选项 注解 示例 文件的基本操作 ls [选项][文件] 显示所有文件和目录 ls -al -a(A) 显示所有文件和目录,包括隐藏文件和目录(显示所有文件和目录,包括隐藏文件和 ...