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轻松实现清新 Loading 效果的简单实例
Jun 06 HTML / CSS
详解CSS3 用border写 空心三角箭头 (两种写法)
Sep 29 HTML / CSS
轻松掌握CSS3中的字体大小单位rem的使用方法
May 24 HTML / CSS
HTML5中的postMessage API基本使用教程
May 20 HTML / CSS
使用html2canvas实现浏览器截图的示例代码
Jan 26 HTML / CSS
HTML5 Canvas 起步(2) - 路径
May 12 HTML / CSS
HTML5是否真的可以取代Flash
Feb 10 HTML / CSS
使用html5 canvas创建太空游戏的示例
May 08 HTML / CSS
使用phonegap进行提示操作的具体方法
Mar 30 HTML / CSS
详解html5页面 rem 布局适配方法
Jan 12 HTML / CSS
HTML5自定义属性的问题分析
Aug 16 HTML / CSS
video下autoplay属性无效的解决方法(添加muted属性)
May 19 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中设置多级目录session的问题
2011/08/08 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue.js国际化 vue-i18n插件的使用详解
2017/07/07 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
深入浅析Node.js 事件循环、定时器和process.nextTick()
2018/10/22 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
利用Opencv实现图片的油画特效实例
2021/02/28 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
Raffaello Network西班牙:意大利拉斐尔时尚购物网
2019/03/12 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
教师党性分析材料
2014/02/04 职场文书
医院学雷锋活动策划方案
2014/02/15 职场文书
医院信息公开实施方案
2014/05/09 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
参观监狱警示教育心得体会
2016/01/15 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python