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实现毛玻璃效果示例源码
Sep 25 HTML / CSS
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
Jan 06 HTML / CSS
用React加CSS3实现微信拆红包动画效果
Mar 13 HTML / CSS
详解CSS3 rem(设置字体大小) 教程
Nov 21 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
Dec 25 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
Nov 29 HTML / CSS
一款利用html5和css3动画排列人物头像的实例演示
Dec 05 HTML / CSS
HTML5 画布canvas使用方法
Mar 18 HTML / CSS
canvas与html5实现视频截图功能示例
Dec 15 HTML / CSS
使用Html5 Stream开发实时监控系统
Jun 02 HTML / CSS
HTML5 背景的显示区域实现
Jul 09 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
Email+URL的判断和自动转换函数
2006/10/09 PHP
php源码分析之DZX1.5加密解密函数authcode用法
2015/06/17 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
jQuery实现给input绑定回车事件的方法
2017/02/09 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python清除函数占用的内存方法
2018/06/25 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
关于Theano和Tensorflow多GPU使用问题
2020/06/19 Python
python db类用法说明
2020/07/07 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
2020/11/11 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
HTML5 3D旋转相册的实现示例
2019/12/03 HTML / CSS
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
国旗下的讲话演讲稿
2014/05/08 职场文书
食品流通安全承诺书
2014/05/22 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
通知书大全
2015/04/27 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS
Golang 字符串的常见操作
2022/04/19 Golang