• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法

    我们要绘制一张图片,内容包括一张背景图和一个动态生成的二维码,前提是背景图是项目本身的静态资源,二维码是服务端动态生成的,二者不在同一域名下。

    解决办法:把所有图片都重定向同一个域名下:

    let count = 0;
    let bgImg = document.creatElement('img');
    let qrImg = document.creatElement('img');
    bgImg.src = redirectUrl('x.png');
    qrImg.src = redirectUrl('y.png');
    [bgImg, qrImg].forEach((e) => {
        e.onload = () => {
            count ++;
            if (count === 2) {
                drawerImg(bgImg, qrImg);  
            }
        }
    })
    function redirectUrl (url) {
        return 'https://xxx/view?fileUrl=' + encodeURIComponent(url);
    }
    function drawerImg (imgContent, qrContent, scaleBy = 2) {
        let {bgImgW, bgImgH} = {375, 800};
        let {qrx, qry, qrw, qrh} = {20, 700, 50, 50};
        let Canvas = document.createElement('canvas');
        let ctx = Canvas.getContext("2d");
        Canvas.width = bgImgW * scaleBy;
        Canvas.height= bgImgH * scaleBy;
        ctx.drawImage(imgContent, 0, 0, bgImgW * scaleBy, bgImgH * scaleBy);
        ctx.drawImage(qrContent, qrx * scaleBy, qry * scaleBy, qrw * scaleBy, qrh * scaleBy);
        
        let nodeI = document.createElement("img");
        nodeI.src = Canvas.toDataURL();
        document.body.appendChild(nodeI)
    }
    

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:canvas绘制圆角头像的实现方法
    下一篇:详解canvas绘制多张图的排列顺序问题
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法 canvas,因为,图片资源,不在,