技术经验解读:二维码生成与解码

简介: 技术经验解读:二维码生成与解码

有三种方式:


1、ZXing.Net


实例源码:


protected void Page_Load(object sender, EventArgs e)


{


DateTime dtBegin = DateTime.Now;


string fileName = AppDomain.CurrentDomain.BaseDirectory + "bin\" + Guid.NewGuid().ToString() + ".jpg";


string content = HttpUtility.UrlDecode(this.Request【"content"】);


BarcodeWriter writer = new BarcodeWriter()


{


Format = BarcodeFormat.QR_CODE,


Options = new EncodingOptions()


{


Width = 300,


Height = 400


},


Renderer = (IBarcodeRenderer)Activator.CreateInstance(typeof(BitmapRenderer))


};


Bitmap bmp = writer.Write(content);


bmp.Save(fileName);


this.Response.WriteFile(fileName);


string time = (DateTime.Now - dtBegin).TotalMilliseconds.ToString();


}


View Code


2、QrCode.Net


实例源码:


protected void Page_Load(object sender, EventArgs e)


{


DateTime dtBegin = DateTime.Now;


string fileName = AppDomain.CurrentDomain.BaseDirectory + "bin\" + Guid.NewGuid().ToString() + ".jpg";


string content = HttpUtility.UrlDecode(Request.QueryString【"content"】);


QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.M);


QrCode qrCode = qrEncoder.Encode(content);


GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(5, QuietZoneModules.Two), Brushes.Black, Brushes.White);


using (FileStream stream = new FileStream(fileName, FileMode.Create))


{


renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream);


}


this.Response.WriteFile(fileName);


string spendTime = (DateTime.Now - dtBegin).TotalMilliseconds.ToString();


}


View Code


3、ThoughtWorks.QRCode


实例源码:


protected void Page_Load(object sender, EventArgs e)


{


DateTime dtBegin = DateTime.Now;


string //代码效果参考:http://www.lyjsj.net.cn/wz/art_22816.html

content = HttpUtility.UrlDecode(Request.QueryString【"content"】);

Bitmap bitmap = CreateQRCode(content);


string fileName = AppDomain.CurrentDomain.BaseDirectory + "bin\" + Guid.NewGuid().ToString() + ".jpg";


bitmap.Save(fileName, ImageFormat.Jpeg);


Response.WriteFile(fileName,true);


string spendTime = (DateTime.Now - dtBegin).TotalMilliseconds.ToString();


//代码效果参考:http://www.lyjsj.net.cn/wx/art_22814.html

}

public Bitmap CreateQRCode(string content)


{


QRCodeEncoder qrEncoder = new QRCodeEncoder();


qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;


qrEncoder.QRCodeScale = 4; //Convert.ToInt32(txtSize.Text);


qrEncoder.QRCodeVersion = 7;// Convert.ToInt32(cboVersion.SelectedValue);


qrEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;


try


{


Bitmap qrcode = qrEncoder.Encode(content, Encoding.UTF8);


return qrcode;


}


catch (IndexOutOfRangeException ex)


{


//超出当前二维码版本的容量上限,请选择更高的二维码版本


return new Bitmap(100, 100);


}


catch (Exception ex)


//代码效果参考:http://www.lyjsj.net.cn/wx/art_22812.html

{

//生成二维码出错


return new Bitmap(100, 100);


}


}


View Code


注意事项:


1、web端请求二维码的一种方式是将生成二维码的服务页面赋给的src属性。


2、三种方式均为开源项目,使用时到官网下载源码,并添加到项目中即可


3、三种方式对比:3的处理速度最快,在web端访问的处理时间大概20ms,1和2的速度达不多,为50ms到70ms左右,但1和2dll较小,几百k,而3为6M


4、方式3的demo运行时有问题,原因待查

相关文章
|
3月前
|
存储 机器学习/深度学习 人工智能
二维码生成原理和解码原理
二维码(Quick Response Code,简称QR码)是一种广泛使用的二维条形码技术。二维码能有效地存储和传递信息,广泛应用于商品追溯、支付、广告等多个领域。二维码的主要特点是信息存储量大、读取速度快、容错能力强等。
298 2
|
7月前
|
机器学习/深度学习 人工智能 算法
解码技术的诗意:我的编程之旅
在数字世界的编织中,每一行代码都承载着创造者的意志与情感。本文将带领读者穿梭于技术与艺术的边界,探索编程不仅仅是逻辑与算法的冷冰冰运算,更是一场充满挑战与创新的心灵之旅。从最初的迷茫到逐步的成长,我将分享个人的技术感悟,揭示那些看似枯燥的代码背后隐藏的无限可能。
49 1
|
8月前
|
存储 算法 数据挖掘
技术经验解读:二维码(QRcode)基本知识
技术经验解读:二维码(QRcode)基本知识
512 0
|
8月前
|
人工智能 缓存 Java
技术经验解读:【转】详细解析用C#写的小游戏《彩色连珠》(附源代码)
技术经验解读:【转】详细解析用C#写的小游戏《彩色连珠》(附源代码)
42 0
|
9月前
|
设计模式 算法 程序员
编码之道:从功能实现到艺术创作
【2月更文挑战第26天】 在数字世界的构建中,代码不仅是实现功能的桥梁,更是连接创意与现实的纽带。本文将探讨如何将日常的编程实践提升为一种艺术性的创造活动,从而让技术工作超越单一的任务执行,变成一种富有表现力和创造力的过程。通过分析编程的核心原理、探索代码的美学特质,并结合个人的实践体验,本文旨在启发读者重新认识编程的内涵,发现编码过程中的艺术潜能。
|
存储 PHP
业界对生成图片缩略图的做法归纳
网站如果有很多用户上传图片(相册,商品图片),一般的做法是将用户图片保存在磁盘上面(数据库中记录图片的地址)。用户上传的时候按照原图、中图、小图等各个尺寸都生成一份保存在磁盘上。比如php的网店系统echsop就是这么做的,而shopex之类也大同小异。
1567 0
|
移动开发 前端开发 JavaScript
技术汇总:第十一章:生成二维码
技术汇总:第十一章:生成二维码
156 0
|
存储 前端开发 开发者
短视频开发app,谈谈前端图片的相关知识点
短视频开发app,谈谈前端图片的相关知识点
选择语音聊天app源码,重点考察对象有哪些?
选择语音聊天app源码,重点考察对象有哪些?
|
数据采集 Python
❤️不到100行把流式热榜截屏合成一张?爬虫终极秘诀【建议收藏】❤️
爬虫如何应对流式加载页面,这100行代码请收藏!
167 0
❤️不到100行把流式热榜截屏合成一张?爬虫终极秘诀【建议收藏】❤️