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实现Material Design效果
Mar 09 HTML / CSS
纯CSS3实现的8种Loading动画效果
Jul 05 HTML / CSS
CSS3的一个简单导航栏实现
Aug 03 HTML / CSS
基于CSS3实现的漂亮Menu菜单效果代码
Sep 10 HTML / CSS
实例讲解CSS3中Transform的perspective属性的用法
Apr 22 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
Jul 03 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
Jan 30 HTML / CSS
Html5实现用户注册自动校验功能实例代码
May 24 HTML / CSS
Html5 Geolocation获取地理位置信息实例
Dec 09 HTML / CSS
HTML5 localStorage使用总结
Feb 22 HTML / CSS
详解h5页面在不同ios设备上的问题总结
Mar 01 HTML / CSS
html5简介及新增功能介绍
May 18 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
php 获取全局变量的代码
2011/04/21 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
php简单生成随机数的方法
2015/07/30 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
js call方法详细介绍(js 的继承)
2013/11/18 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
vue 虚拟DOM的原理
2020/10/03 Javascript
JavaScript前后端JSON使用方法教程
2020/11/23 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
会计专业大学生求职信范文
2014/01/28 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
医生个人年度总结
2015/02/28 职场文书
《山中访友》教学反思
2016/02/24 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL