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气泡 css3关键帧动画创建的动态通知气泡
Feb 26 HTML / CSS
css3弹性盒模型实例介绍
May 27 HTML / CSS
基于css3 animate制作绚丽的动画效果
Nov 24 HTML / CSS
CSS3 对过渡(transition)进行调速以及延时
Oct 21 HTML / CSS
Html5中的桌面通知Notification的实现
Sep 25 HTML / CSS
canvas基础之图形验证码的示例
Jan 02 HTML / CSS
HTML5 新事件 小结
Jul 16 HTML / CSS
HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题
Apr 24 HTML / CSS
利用html5的websocket实现websocket聊天室
Dec 12 HTML / CSS
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
Dec 14 HTML / CSS
html5 横向滑动导航栏的方法示例
May 08 HTML / CSS
CSS完成视差滚动效果
Apr 27 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去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
ajax接收后台数据在html页面显示
2017/02/19 Javascript
微信小程序 ecshop地址三级联动实现实例代码
2017/02/28 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python类的继承用法示例
2019/01/31 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python的re模块使用方法详解
2019/07/26 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
VC++笔试题
2014/10/13 面试题
生产部岗位职责范文
2014/02/07 职场文书
文明寝室申报材料
2014/05/12 职场文书
小学安全汇报材料
2014/08/14 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
演讲稿:态度决定一切
2019/04/02 职场文书
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers