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画一个阴阳八卦图
Mar 09 HTML / CSS
css3 响应式媒体查询的示例代码
Sep 25 HTML / CSS
css背景图片的背景裁切、背景透明度、背景变换等效果运用
Dec 24 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
Jan 06 HTML / CSS
html5使用canvas绘制一张图片
Dec 15 HTML / CSS
浅谈html5标签css3的常用样式
Oct 20 HTML / CSS
HTML5之消息通知的使用(Web Notification)
Oct 30 HTML / CSS
canvas生成带二维码海报的踩坑记录
Sep 11 HTML / CSS
HTML中meta标签及Keywords
Apr 15 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
Apr 16 HTML / CSS
css height属性中的calc方法详解
Jun 03 HTML / CSS
CSS 伪元素::marker详解
Jun 26 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
mysql 性能的检查和优化方法
2009/06/21 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
php 删除cookie方法详解
2014/12/01 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
Express作者TJ告别Node.js奔向Go
2014/07/14 Javascript
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
javascript数据类型详解
2017/02/07 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
es6数值的扩展方法
2019/03/11 Javascript
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python通过http下载文件的方法详解
2019/07/26 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
Python利用 utf-8-sig 编码格式解决写入 csv 文件乱码问题
2020/02/21 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
初二生物教学反思
2014/02/03 职场文书
书香校园建设方案
2014/05/02 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript