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的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
使用Html5、CSS实现文字阴影效果
Jan 17 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
让IE下支持Html5的placeholder属性的插件
Sep 02 HTML / CSS
探索HTML5本地存储功能运用技巧
Mar 02 HTML / CSS
HTML5标签嵌套规则详解【必看】
Apr 26 HTML / CSS
Web前端页面跳转并取到值
Apr 24 HTML / CSS
HTML5在线预览PDF的示例代码
Sep 14 HTML / CSS
吃透移动端 1px的具体用法
Dec 16 HTML / CSS
CSS filter 有什么神奇用途
May 25 HTML / CSS
html5表单的required属性使用
Jul 07 HTML / CSS
基于CSS制作创意端午节专属加载特效
Jun 01 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中file_get_contents与curl性能比较分析
2014/11/08 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
JavaScript判断是否为数字的4种方法及效率比较
2015/04/01 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
详解JS函数防抖
2020/06/05 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python time库基本使用方法分析
2019/12/13 Python
django迁移文件migrations的实现
2020/03/31 Python
python 实现控制鼠标键盘
2020/11/27 Python
python爬虫爬取某网站视频的示例代码
2021/02/20 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
合作意向书格式及范文
2014/03/31 职场文书
大气污染防治方案
2014/05/19 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
管理工程专业求职信
2014/08/10 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
任命书格式范文
2015/09/22 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
python全面解析接口返回数据
2022/02/12 Python
使用Redis实现分布式锁的方法
2022/06/16 Redis