Asp.Net 之 二维码生成
2024-08-25 07:42:19
首先,引用 ThoughtWorks.QRCode.dll 。
简单二维码生成及解码代码:
//生成二维码方法一
private void CreateCode_Simple(string nr)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
qrCodeEncoder.QRCodeScale = ;
qrCodeEncoder.QRCodeVersion = ;
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
//System.Drawing.Image image = qrCodeEncoder.Encode("4408810820 深圳-广州 小江");
System.Drawing.Image image = qrCodeEncoder.Encode(nr);
string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;
System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); fs.Close();
image.Dispose();
//二维码解码
var codeDecoder = CodeDecoder(filepath);
} /// <summary>
/// 二维码解码
/// </summary>
/// <param name="filePath">图片路径</param>
/// <returns></returns>
public string CodeDecoder(string filePath)
{
if (!System.IO.File.Exists(filePath))
return null;
Bitmap myBitmap = new Bitmap(Image.FromFile(filePath));
QRCodeDecoder decoder = new QRCodeDecoder();
string decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
return decodedString;
}
相对复杂的生成方式:
界面效果:
前端代码:
@{
Layout = null;
} <!DOCTYPE html> <html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Code</title>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function () {
$("#createCode").click(function () {
var strData = $("#strData").val();
var level = $("#level").val();
var encoding = $("#encoding").val();
var version = $("#version").val();
var scale = $("#scale").val(); $.post("/home/CreateCode_Choose", { strData: strData, level: level, qrEncoding: encoding, version: version, scale: scale },
function (data) {
$("img").attr("src", data);
});
}); }); </script>
</head>
<body>
<div>
<p>要生成的文字(支持中文):<input id="strData" type="text" value="123456 测试" /></p>
<p>
Encoding:<select id="encoding">
<option value="Byte">Byte</option>
<option value="AlphaNumeric">AlphaNumeric</option>
<option value="Numeric">Numeric</option>
</select> </p>
<p>
Correction Level:<select id="level">
<option value="M">M</option>
<option value="L">L</option>
<option value="Q">Q</option>
<option value="H">H</option>
</select>
</p>
<p>Version:<input id="version" type="text" value="8" /></p>
<p>scale:<input id="scale" type="text" value="4" /></p>
<img src="" alt="" />
<input id="createCode" type="button" value="生成" />
</div>
</body>
</html>
后台代码:
/// 生成二维码
/// </summary>
/// <param name="strData">要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444</param>
/// <param name="qrEncoding">三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>
/// <param name="level">大小:L M Q H</param>
/// <param name="version">版本:如 8</param>
/// <param name="scale">比例:如 4</param>
/// <returns></returns>
public ActionResult CreateCode_Choose(string strData, string qrEncoding, string level, int version, int scale)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
string encoding = qrEncoding;
switch (encoding)
{
case "Byte":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
break;
case "AlphaNumeric":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
break;
case "Numeric":
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
break;
default:
qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
break;
} qrCodeEncoder.QRCodeScale = scale;
qrCodeEncoder.QRCodeVersion = version;
switch (level)
{
case "L":
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
break;
case "M":
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
break;
case "Q":
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
break;
default:
qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
break;
}
//文字生成图片
Image image = qrCodeEncoder.Encode(strData);
string filename = DateTime.Now.ToString("yyyymmddhhmmssfff").ToString() + ".jpg";
string filepath = Server.MapPath(@"~\Upload") + "\\" + filename;
//如果文件夹不存在,则创建
//if (!Directory.Exists(filepath))
// Directory.CreateDirectory(filepath);
System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
fs.Close();
image.Dispose();
return Content(@"/Upload/" + filename);
}
最新文章
- js 也来 - 【拉勾专场】抛弃简历!让代码说话!
- Mac 显示隐藏文件
- [Asp.net 5] Localization-Asp.net运行时多语言
- 揣摩实现一个ioc容器需要做的事情
- phpMyAdmin 缺少 mysqli 扩展。请检查 PHP 配置
- 9月15日,YTFCloud,创业圈的技术新宠
- HTML中Select的使用具体解释
- VS2015安装开发ios android
- JavaScript 数组的遍历
- Best jQuery Plugins of the Month – May 2014
- vmware虚拟机如何安装ubuntu14.10系统
- C/C++创建多级目录
- [洛谷P1419] 寻找段落
- Python基础(条件判断,循环,占位符等)
- js:上传图片并预览(https://blog.csdn.net/weixin_38023551/article/details/78318532)
- Java 关键字 速查表
- 云服务器ECS
- Qt+QGis二次开发:加载栅格图层和矢量图层
- MyEclipse配置默认自带的XML代码格式化
- grep与egrep的区别
热门文章
- python抓取网页图片的小案例
- 洛谷——P2708 硬币翻转
- 2017 Hackatari Codeathon B. 2Trees(深搜)(想法)
- 【BZOJ 1060】 1060: [ZJOI2007]时态同步 (树形DP)
- hdu 5961 传递 (2016ccpc 合肥站 A题)
- BZOJ 2152 聪聪可可(点分治)
- 消除Xcode 5中JosnKit类库的bit masking for introspection of objective-c 警告
- 班尼特&#183;A&#183;麦克道尔 - 一个交易者的资金管理系统(2013年5月26日)
- jQuery.extend重载合并
- 报错:this class is not key value coding-compliant for the key closeLotTextField解决方法