生成二维码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了生成二维码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5162字,纯文字阅读大概需要8分钟。
内容图文
![生成二维码](/upload/InfoBanner/zyjiaocheng/1070/6b1c268526ab48fb8da5cba2835a68ce.jpg)
这里需要引用一个库
下载地址:点击查看
引用到我们的项目,然后双击打开对象浏览器
这两个类是主要的。字面意思就很好区别了,一个是把信息生成二维码,一个是把二维码转成信息。
QRCodeEncoder
namespace ThoughtWorks.QRCode.Codec { public class QRCodeEncoder { public QRCodeEncoder(); public virtual Color QRCodeBackgroundColor { get; set; } publicvirtual ENCODE_MODE QRCodeEncodeMode { get; set; } publicvirtual ERROR_CORRECTION QRCodeErrorCorrect { get; set; } publicvirtual Color QRCodeForegroundColor { get; set; } publicvirtualint QRCodeScale { get; set; } publicvirtualint QRCodeVersion { get; set; } publicvirtualbool[][] calQrcode(byte[] qrcodeData); publicvirtualint calStructureappendParity(sbyte[] originaldata); publicvirtual Bitmap Encode(string content); publicvirtual Bitmap Encode(string content, Encoding encoding); publicvirtualvoid setStructureappend(int m, int n, int p); publicenum ENCODE_MODE { ALPHA_NUMERIC, NUMERIC, BYTE } publicenum ERROR_CORRECTION { L, M, Q, H } } }
生成二维码有两种方法:
①先生成二维码图片并保存在服务端,然后围绕这个图片进行处理。
<div style="width: 800px; height: 100%; margin: auto;"> <div> <span>编码类型:</span><asp:DropDownList ID="ddlCoding" runat="server"></asp:DropDownList> </div> <div> <span>等级:</span><asp:DropDownList ID="ddlLevel" runat="server"></asp:DropDownList> </div> <div> <span>版本:</span><asp:DropDownList ID="ddlVersion" runat="server"></asp:DropDownList> </div> <div> <span>大小:</span><asp:TextBox ID="txtSize" runat="server" Text="4"></asp:TextBox> </div> <div> <span>存储的数据:</span><asp:TextBox ID="txtData" runat="server"></asp:TextBox> </div> <asp:Button ID="Button1" runat="server" Text="生成二维码" OnClick="Button1_Click" /><br /> <asp:ImageButton ID="ImageButton2" runat="server" Height="150px" Width="150px" /><br /> <%-- <asp:ImageButton ID="ImageButton1" runat="server" Height="150px" Width="150px" /><br />--%> <div> <span>解码数据:</span><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></asp:TextBox> </div> </div>
/// <summary> /// /// </summary> Bitmap CreateQR() { QRCodeEncoder qe = new QRCodeEncoder(); //设置编码模式 qe.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//字节 自有设置为字节的时候扫码才会是存的数据 //等级switch (ddlLevel.SelectedIndex) { case0: qe.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; //错误效验、错误更正(有4个等级:H-L-M-Q) break; case1: qe.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; break; case2: qe.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q; break; case3: qe.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H; break; } qe.QRCodeVersion = ddlVersion.SelectedIndex + 1;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误) qe.QRCodeScale = int.Parse(txtSize.Text); //// (值越大生成的二维码图片像素越高)// qe.QRCodeBackgroundColor = System.Drawing.Color.Blue; //图片名称string name = DateTime.Now.ToString("yyyyMMddHHssmm")+".png"; //图片路径string FullName = Server.MapPath("..")+ "\\img\\" + name; // string FullName = Server.MapPath("../img/")+name; //对数据进行编码并生成Bitmap Bitmap map = qe.Encode(txtData.Text, Encoding.Default); //中文需要编码 map.Save(FullName); // qe.Encode(txtData.Text) 返回的是Bitmap类型 // qe.Encode(txtData.Text,Encoding.Default).Save(FullName);//把图片保存到目标图片 ImageButton2.ImageUrl ="../img/"+name; return map; //返回Bitmao类型,解码需要 }
你可以选择不同的属性去生成二维码
解码:
一开始你不会知道怎么解码,你可以去看它的类有什么方法
public class QRCodeDecoder { public QRCodeDecoder(); public static DebugCanvas Canvas { get; set; } publicvirtualstring decode(QRCodeImage qrCodeImage); publicvirtualstring decode(QRCodeImage qrCodeImage, Encoding encoding); publicvirtualsbyte[] decodeBytes(QRCodeImage qrCodeImage); }
那你看一眼就知道 decode这个方法了,你在转定义到 QRCodeImage这个类
他是一个接口,接口是不能直接new的,我们可以new一个继承这个接口的类。所以我们再去找继承这个接口的类。
namespace ThoughtWorks.QRCode.Codec.Data { public class QRCodeBitmapImage : QRCodeImage { public QRCodeBitmapImage(Bitmap image); //Bitmap参数 public virtual int Height { get; } publicvirtualint Width { get; } publicvirtualint getPixel(int x, int y); } }
解码代码也就出来了
/// <summary> /// 解码 /// </summary> /// <param name="mp"></param> void DeQR(Bitmap mp) { // 解码 QRCodeDecoder qd = new QRCodeDecoder(); QRCodeImage qi = new QRCodeBitmapImage(mp); TextBox1.Text = qd.decode(qi, Encoding.Default); }
protected void Button1_Click(object sender, EventArgs e) //生成事件 { Bitmap mps=CreateQR(); //生成二维码的时候返回Bitmap类型 DeQR(mps); }
②以流的形式输出,类似验证码
在页面上添加一个放图片的位子
把图片地址链接到另一个页面
protected void Page_Load(object sender, EventArgs e) { if (!string.IsNullOrEmpty(Request.QueryString["data"])) { string str = Request.QueryString["data"]; //初始化二维码生成工具 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; qrCodeEncoder.QRCodeVersion = 0; qrCodeEncoder.QRCodeScale = 4; //将字符串生成二维码图片 Bitmap image = qrCodeEncoder.Encode(str, Encoding.Default); //保存为PNG到内存流 MemoryStream ms = new MemoryStream(); image.Save(ms, ImageFormat.Png); //输出二维码图片 Response.BinaryWrite(ms.GetBuffer()); Response.End(); } }
原文:http://www.cnblogs.com/Sea1ee/p/7250130.html
内容总结
以上是互联网集市为您收集整理的生成二维码全部内容,希望文章能够帮你解决生成二维码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。