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


Posted in HTML / CSS onJanuary 18, 2019

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

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

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)
}

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

HTML / CSS 相关文章推荐
纯css3制作网站后台管理面板
Dec 30 HTML / CSS
CSS3 实现发光边框特效
Nov 11 HTML / CSS
详解使用HTML5的classList属性操作CSS类
Oct 13 HTML / CSS
html5 canvas绘制放射性渐变色效果
Jan 04 HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 HTML / CSS
HTML5实现预览本地图片
Feb 17 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
Feb 19 HTML / CSS
详解如何通过H5(浏览器/WebView/其他)唤起本地app
Dec 11 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 HTML / CSS
AmazeUI 模态窗口的实现代码
Aug 18 HTML / CSS
AmazeUI 等分网格的实现示例
Aug 25 HTML / CSS
html,css,javascript是怎样变成页面的
May 07 HTML / CSS
canvas绘制圆角头像的实现方法
Jan 17 #HTML / CSS
HTML5如何使用SVG的方法示例
Jan 11 #HTML / CSS
Canvas 像素处理之改变透明度的实现代码
Jan 08 #HTML / CSS
详解Canvas实用库Fabric.js使用手册
Jan 07 #HTML / CSS
Html5原创俄罗斯方块(基于canvas)
Jan 07 #HTML / CSS
h5使用canvas画布实现手势解锁
Jan 04 #HTML / CSS
canvas中普通动效与粒子动效的实现代码示例
Jan 03 #HTML / CSS
You might like
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
python if not in 多条件判断代码
2016/09/21 Python
Python 私有函数的实例详解
2017/09/11 Python
机器学习的框架偏向于Python的13个原因
2017/12/07 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python3列表List入门知识附实例
2020/02/09 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
pyspark 随机森林的实现
2020/04/24 Python
Python操作Excel的学习笔记
2021/02/18 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
初任培训自我鉴定
2013/10/07 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
展览会邀请函
2015/02/02 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书
MySQL中in和exists区别详解
2021/06/03 MySQL
sql字段解析器的实现示例
2021/06/23 SQL Server