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实现针线缝合效果(图解步骤)
Feb 04 HTML / CSS
详解CSS3 Media Queries中媒体属性的使用
Feb 29 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
Jun 01 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
Jan 08 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
Dec 13 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
Jan 07 HTML / CSS
html5 worker 实例(一) 为什么测试不到效果
Jun 24 HTML / CSS
HTML5实现直播间评论滚动效果的代码
May 27 HTML / CSS
HTML5简单实现添加背景音乐的几种方法
May 12 HTML / CSS
HTML5 语义化标签(移动端必备)
Aug 23 HTML / CSS
开发微信小程序之WXSS样式教程
Apr 18 HTML / CSS
使用CSS实现六边形的图片效果
Aug 05 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快速url重写 更新版[需php 5.30以上]
2010/04/20 PHP
php中serialize序列化与json性能测试的示例分析
2013/04/27 PHP
php之Memcache学习笔记
2013/06/17 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
Add a Table to a Word Document
2007/06/15 Javascript
精心挑选的15个jQuery下拉菜单制作教程
2012/06/15 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
2016/08/18 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
微信小程序按钮点击动画效果的实现
2019/09/04 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
2020/11/05 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python中用format函数格式化字符串的用法
2015/04/08 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
基于TensorFlow常量、序列以及随机值生成实例
2020/01/04 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
HTML5中5个简单实用的API
2014/04/28 HTML / CSS
HTML5拖拽API经典实例详解
2018/04/20 HTML / CSS
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
寒假实习自荐信
2014/01/26 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
刑事申诉状范文
2015/05/20 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫