• 网店系统H5版(五) 给商品图片添加二维码水印并下载


    2020-4-5 21:32:41 星期日

    网店需要提供分享并下载商品图片的功能, 这里使用jquery-qrcode + h5的canvas实现这个功能

    并没有请求后端, 全是在客户端浏览器上执行的

     1 function createShareImage(goodsId, goodsImgUrl) {
     2     let urlGoodsDetail = location.origin + '/vstore_goodsinfo_' + goodsId; //商品详情页链接
     3     let urlGoodsImg = location.origin + goodsImgUrl; //商品图片链接
     4 
     5     let image = new Image();
     6     image.onload = function () {
     7         //创建画布
     8         let canvasElement = document.getElementById('goodsCanvas'); //已有或者通过 createElement 实时创建
     9         let ctx = canvasElement.getContext('2d');
    10 
    11         //将图片画到canvas上去
    12         let imageW = image.width;
    13         let imageH = image.height;
    14         let w = imageW;
    15         let h = imageH;
    16         let maxWidth = 500;
    17         if (imageW > maxWidth) {
    18             w = maxWidth;
    19             h = parseInt((maxWidth * imageH) / imageW);
    20         }
    21         canvasElement.setAttribute('width', w+'px');
    22         canvasElement.setAttribute('height', h+'px');
    23         ctx.drawImage(image, 0, 0, w, h);
    24 
    25         //生成商品二维码
    26         $('#goodsQR').qrcode({text:urlGoodsDetail,quiet:2}); //需要引入jquery-qrcode
    27         let canvasQR = document.getElementById('goodsQR').getElementsByTagName('canvas')[0];
    28 
    29         //将二维码画上去
    30         let qrWidth = 80;
    31         ctx.drawImage(canvasQR, w-qrWidth, h-qrWidth, qrWidth, qrWidth);
    32 
    33         //下载图片
    34         let MIME_TYPE = "image/png";
    35         let imgURL = canvasElement.toDataURL(MIME_TYPE);
    36         let dlLink = document.createElement('a');
    37         dlLink.download = goodsId.substring(0,10)+'.png';
    38         dlLink.href = imgURL;
    39         dlLink.dataset.downloadurl = [MIME_TYPE, dlLink.download, dlLink.href].join(':');
    40 
    41         document.body.appendChild(dlLink);
    42         dlLink.click();
    43         document.body.removeChild(dlLink);
    44     };
    45 
    46     image.src = urlGoodsImg;
    47 }

     源码(码云)

  • 相关阅读:
    8月10日CSS总结
    CSS总结
    CSS总结
    Jquery属性&css 大全
    Jquery---选择器 大全
    Javascript第七天
    Javascript第六天
    Javascript第五天
    Javascript 第四天
    第三天 JavaScript运算符(续)
  • 原文地址:https://www.cnblogs.com/iLoveMyD/p/12639245.html
Copyright © 2020-2023  润新知