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实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
纯css3实现的竖形无限级导航
Dec 10 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
Aug 24 HTML / CSS
详解CSS3中的box-sizing(content-box与border-box)
Apr 19 HTML / CSS
HTML5使用Audio标签实现歌词同步的效果
Mar 17 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
html5 canvas-1.canvas介绍(hello canvas)
Jan 07 HTML / CSS
HTML5学习笔记之html5与传统html区别
Jan 06 HTML / CSS
html5 div布局与table布局详解
Nov 16 HTML / CSS
浅谈HTML5 服务器推送事件(Server-sent Events)
Aug 01 HTML / CSS
CSS3常见动画的实现方式
Apr 14 HTML / CSS
CSS极坐标的实例代码
Jun 03 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
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
javascript算法学习(直接插入排序)
2011/04/12 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
react-router4按需加载(踩坑填坑)
2019/01/06 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
python基础教程之循环介绍
2014/08/29 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python实现获取Ip归属地等信息
2016/08/27 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
python 解决函数返回return的问题
2020/12/05 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
医院实习接收函
2014/01/12 职场文书
大学毕业感言50字
2014/02/07 职场文书
《胖乎乎的小手》教学反思
2014/02/26 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
公路施工安全责任书
2015/05/08 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
JavaScript实现简单拖拽效果
2021/09/15 Javascript