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的rem属性制作响应式页面布局的要点解析
May 24 HTML / CSS
CSS3教程:background-clip和background-origin
Oct 17 HTML / CSS
CSS书写规范、顺序和命名规则
Mar 06 HTML / CSS
一款纯css3实现的响应式导航
Oct 31 HTML / CSS
CSS3 中filter(滤镜)属性使用详解
Apr 07 HTML / CSS
CSS3+JavaScript实现炫酷呼吸效果的示例代码
Jun 15 HTML / CSS
CSS3实现莲花绽放的动画效果
Nov 06 HTML / CSS
HTML5之SVG 2D入门6—视窗坐标系与用户坐标系及变换概述
Jan 30 HTML / CSS
HTML5实现WebSocket协议原理浅析
Jul 07 HTML / CSS
HTML5+CSS3:3D展示商品信息示例
Jan 03 HTML / CSS
基于HTML十秒做出淘宝页面
Oct 24 HTML / CSS
HTML页面点击按钮关闭页面的多种方式
Dec 24 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实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP将身份证正反面两张照片合成一张图片的代码
2017/04/08 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
python psutil库安装教程
2018/03/19 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
党员公开承诺书范文
2014/03/25 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
2014年科普工作总结
2014/12/06 职场文书
原告代理词范文
2015/05/25 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
高三物理教学反思
2016/02/20 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python