C# 生产二维码QRCode(页面下载)
引入包ThoughtWorks.QRCode
using ThoughtWorks.QRCode.Codec;
#region 生成二维码图片 /// <summary> /// 生成二维码图片 /// </summary> /// <param name="codeNumber">要生成二维码的字符串</param> /// <param name="size">大小尺寸</param> /// <returns>二维码图片</returns> [HttpPost] public string CreateImgCode(string codeNumber, int size = 30) { //创建二维码生成类 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); //设置编码模式 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量度 qrCodeEncoder.QRCodeScale = size; //设置编码版本 qrCodeEncoder.QRCodeVersion = 0; //设置编码错误纠正 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //生成二维码图片 System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber); var imageUtl = ToBase64(image); return imageUtl; } //IMG识别Baser64 private string ToBase64(Bitmap bmp) { try { MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] arr = new byte[ms.Length]; ms.Position = 0; ms.Read(arr, 0, (int)ms.Length); ms.Close(); String strbaser64 = Convert.ToBase64String(arr); return strbaser64; } catch (Exception ex) { System.Windows.MessageBox.Show("ImgToBase64String 转换失败 Exception:" + ex.Message); return ""; } } #endregion
页面:
<img id="imgqrcode" src="" />
var url = "data:image/png;base64," + data; // 获取图片地址 $("#imgqrcode").attr('src', url);//IMG赋值 //下载图片 var a = document.createElement('a'); // 创建一个a节点插入的document var event = new MouseEvent('click') // 模拟鼠标click点击事件 a.download = '二维码' // 设置a节点的download属性值,图片名称 a.href = url ; // 将图片的src赋值给a节点的href a.dispatchEvent(event);
注意:图片URL中,(data)Base64前面需要加:
data:image/png;base64,
data表示取得数据的协定名称,image/png是数据类型名称,base64 是数据的编码方法,
逗号后面是image/png文件base64编码后的数据.
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据