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

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

有三种方式:


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运行时有问题,原因待查

相关文章
|
JavaScript 数据处理
JS 取整,取余操作
JS 取整,取余操作
292 0
|
JavaScript
|
4月前
|
IDE 开发工具 数据安全/隐私保护
鸿蒙开发:应用上架第三篇,配置签名信息打出上架包
可以说,所有的签名信息文件,我们都已经完成了,正所谓,万事俱备只欠东风,这篇文章,我们着重概述一下,如何配置签名信息以及如何打出签名包。
153 4
鸿蒙开发:应用上架第三篇,配置签名信息打出上架包
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
Tokenformer:基于参数标记化的高效可扩展Transformer架构
本文是对发表于arXiv的论文 "TOKENFORMER: RETHINKING TRANSFORMER SCALING WITH TOKENIZED MODEL PARAMETERS" 的深入解读与扩展分析。主要探讨了一种革新性的Transformer架构设计方案,该方案通过参数标记化实现了模型的高效扩展和计算优化。
539 0
|
10月前
|
存储 机器学习/深度学习 人工智能
二维码生成原理和解码原理
二维码(Quick Response Code,简称QR码)是一种广泛使用的二维条形码技术。二维码能有效地存储和传递信息,广泛应用于商品追溯、支付、广告等多个领域。二维码的主要特点是信息存储量大、读取速度快、容错能力强等。
1141 2
|
12月前
|
存储 人工智能 安全
浅谈base64编码
浅谈base64编码
371 0
|
设计模式 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(20)-- 在基于UniApp+Vue的移动端实现多条件查询的处理
基于SqlSugar的开发框架循序渐进介绍(20)-- 在基于UniApp+Vue的移动端实现多条件查询的处理
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
1531 0
|
存储 编译器
【.NET Core】特性(Attribute)详解
【.NET Core】特性(Attribute)详解
544 2
|
安全 定位技术 API
无代码平台评测:草料二维码
无代码平台让创建应用变得简单,无需编写代码,通过图形界面和预设模块,实现软件开发。草料二维码作为无代码平台,具备丰富功能,使用门槛低,适合一线业务人员和中小企业。其核心功能包括内容展示、表单、动态数据和批量生码,广泛应用于产品介绍、签到报名等场景。优点是搭建简单、使用方便且多数功能免费;缺点在于功能相对简单,不支持私有化部署。总体而言,它是实现低成本信息化管理的高性价比选择。

热门文章

最新文章