• .net二维码图片生成,并在中间添加LOGO,附base64图片下载功能


    1、使用vs的NuGet包管理工具,搜索QRCoder并安装

    2、后台代码

    public string GetErWiMaCode()
    {
    
           //使用\n实现文本换行功能
            string str = $"植株编号:{ZZ_BIANHAO}\n植物名称{ZZ_MC}\n植物类型:{ZZ_ZHIWU_LX_NAME}\n经度:{JINGDU}\n纬度:{WEIDU}\n绑定人:{USER_MC}";
                using (Image codeImage = CreateQRimg(str))
                {
                    using (var stream = new MemoryStream())
                    {
                        codeImage.Save(stream, ImageFormat.Jpeg);
    
                        var t = stream.ToArray();
                        base64 = "data:image/jpeg;base64," + Convert.ToBase64String(t);
                    }
                }
                return base64;
    }        
    
            /// <summary>
            /// 生成二维码图片
            /// </summary>
            /// <param name="str"></param>
            /// <returns></returns>
            public Bitmap CreateQRimg(string str)
            {
                QRCodeGenerator qrGenerator = new QRCodeGenerator();
                QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, QRCodeGenerator.ECCLevel.Q);
                QRCoder.QRCode qrCode = new QRCoder.QRCode(qrCodeData);
    
                Bitmap bt = qrCode.GetGraphic(20);

           //下面是在中间添加LOGO的代码,如果不用LOGO直接返回bt就可以
    var imgPath= HttpContext.Current.Server.MapPath("~/").ToString()+ "Files/Image/logo.png"; Image imgLogo = Image.FromFile(imgPath); Graphics NewPic = Graphics.FromImage(bt); //画图片1的坐标以及大小 Rectangle PlayerPicStangle1 = new Rectangle(bt.Size.Width/2-150, bt.Size.Height / 2 - 150, 300, 300); //绘制图片(合并2张图片) NewPic.DrawImage(imgLogo, PlayerPicStangle1); return bt; }

    这样会返回一个base64的图片,然后在前端展示就可以了

    3、前端base64图片下载功能,兼容Google和IE

    function downImg(){
        const imgUrl = "base64图片码";
        // 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候),那么调用该方法去下载图片
        if (window.navigator.msSaveOrOpenBlob) {
          var bstr = atob(imgUrl.split(',')[1]);
          var n = bstr.length;
          var u8arr = new Uint8Array(n);
          while (n--) {
             u8arr[n] = bstr.charCodeAt(n);
          }
          var blob = new Blob([u8arr]);
          window.navigator.msSaveOrOpenBlob(blob, 'chart-download' + '.' + 'png');
        } else {
            // 这里就按照chrome等新版浏览器来处理
            const a = document.createElement('a');
            a.href = imgUrl;
            a.setAttribute('download', 'chart-download');
            a.click();
         }
    
    }    
  • 相关阅读:
    关于 省赛模拟赛(迪迦桑专场)
    ZOJ3878: Convert QWERTY to Dvorak(浙江省赛2015)
    Is It A Tree?
    Escape
    关于细节
    [UE4]AnimDynamics简介
    [UE4]武器碰撞
    [UE4]CustomAnimationBlueprintNode 自定义动画蓝图节点
    百钱买白鸡
    asp.net 标准控件的重要属性
  • 原文地址:https://www.cnblogs.com/dushaojun/p/15688109.html
Copyright © 2020-2023  润新知