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

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

有三种方式:


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天前
|
机器学习/深度学习 人工智能 算法
解码技术的诗意:我的编程之旅
在数字世界的编织中,每一行代码都承载着创造者的意志与情感。本文将带领读者穿梭于技术与艺术的边界,探索编程不仅仅是逻辑与算法的冷冰冰运算,更是一场充满挑战与创新的心灵之旅。从最初的迷茫到逐步的成长,我将分享个人的技术感悟,揭示那些看似枯燥的代码背后隐藏的无限可能。
8 1
|
18天前
|
存储 算法 数据挖掘
技术经验解读:二维码(QRcode)基本知识
技术经验解读:二维码(QRcode)基本知识
22 0
|
2月前
|
设计模式 算法 程序员
编码之道:从功能实现到艺术创作
【2月更文挑战第26天】 在数字世界的构建中,代码不仅是实现功能的桥梁,更是连接创意与现实的纽带。本文将探讨如何将日常的编程实践提升为一种艺术性的创造活动,从而让技术工作超越单一的任务执行,变成一种富有表现力和创造力的过程。通过分析编程的核心原理、探索代码的美学特质,并结合个人的实践体验,本文旨在启发读者重新认识编程的内涵,发现编码过程中的艺术潜能。
|
8月前
|
编解码 人工智能 前端开发
编码之旅:从非科班转码者到应用开发者
编码之旅:从非科班转码者到应用开发者
79 0
|
8月前
|
消息中间件 设计模式 Java
如何使用ChatGPT提升自己的“码”力?
经过我两个月的使用,我发现ChatGPT目前还完全无法替代程序员,尤其是在一些强上下文的编程场景下,比如一些重业务的编程场景。而在一些比较通用化的编程场景下,其展现出来的能力尚可。总结起来,我们程序员目前不必太担心ChatGPT抢我们饭碗的情况,但是可以利用它来完成一些编程相关的事,把它当做一个工具来大幅度提升我们的工作效率,下面是一些我总结的可以利用ChatGPT的一些场景,希望对大家有所帮助。
53 0
|
9月前
|
传感器 存储 编解码
即时通讯音视频开发(二十):一文读懂视频的颜色模型转换和色域转换
本文将以通俗易懂的文字,引导你理解视频是如何从采集开始,历经各种步骤,最终通过颜色模型转换和不同的色域转换,让你看到赏心悦目的视频结果的。
47 0
|
9月前
|
JSON 前端开发 Java
重生之我在这个世界的文本转音频API工程师的故事
重生之我在这个世界的文本转音频API工程师的故事
44 0
|
移动开发 前端开发 JavaScript
技术汇总:第十一章:生成二维码
技术汇总:第十一章:生成二维码
122 0
|
编解码 前端开发 JavaScript
前端技术-bable 转码器 | 学习笔记
简介:快速学习前端技术-bable 转码器
101 0
|
存储 PHP
业界对生成图片缩略图的做法归纳
网站如果有很多用户上传图片(相册,商品图片),一般的做法是将用户图片保存在磁盘上面(数据库中记录图片的地址)。用户上传的时候按照原图、中图、小图等各个尺寸都生成一份保存在磁盘上。比如php的网店系统echsop就是这么做的,而shopex之类也大同小异。
1511 0