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图片数据

posted on 2021-04-13 23:59  小乐丶  阅读(458)  评论(0编辑  收藏  举报