Canvas引入跨域的图片导致toDataURL()报错的问题的解决


Posted in HTML / CSS onSeptember 19, 2018

本文介绍了Canvas引入跨域的图片导致toDataURL()报错的问题的解决,分享给大家,具体如下:

Canvas引入跨域的图片导致toDataURL()报错的问题的解决

【场景】

用户打开网页,则请求腾讯COS(图片服务器)上的图片。使用canvas绘图。

然后,用户可以重新选择图片、裁剪、上传。

【问题】

图片首次载入,选择新图片后裁剪、绘制都没有问题。但上传失败,报错如下:

Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

经过了解,需要在图片首次引用时,设置crossOrigin字段:

var c=document.getElementById("cover_show");
                var img=new Image();
                img.src="http://vsqx-cover-xxxxxx.coscd.myqcloud.com/"+this.vsqx_uid+".jpg";
                //增加这一行:
                img.setAttribute("crossOrigin",'anonymous');
                img.onload = function(){
                    var cxt=c.getContext("2d");
                    cxt.drawImage(img,0,0,300,150,0,0,200,126);
                }

然后再次运行。发现图片首次载入时,不显示了。。。

Canvas引入跨域的图片导致toDataURL()报错的问题的解决

控制台报错如下:

Canvas引入跨域的图片导致toDataURL()报错的问题的解决

【最终解决方法】

登录腾讯云COS,找到这个储存桶,设置“跨域访问CORS”。(其他PHP/JAVA服务器同理)

Canvas引入跨域的图片导致toDataURL()报错的问题的解决

再次测试:图片显示成功,图片上传成功。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
使用CSS3实现圆角,阴影,透明
Dec 23 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
详解如何在css3打包后自动追加前缀插件:autoprefixer
Dec 18 HTML / CSS
CSS3 实现童年的纸飞机
May 05 HTML / CSS
html5 localStorage本地存储_动力节点Java学院整理
Jul 06 HTML / CSS
canvas粒子动画背景的实现示例
Sep 03 HTML / CSS
canvas基础之图形验证码的示例
Jan 02 HTML / CSS
HTML5 Canvas实现烟花绽放特效
Mar 02 HTML / CSS
HTML5通用接口详解
Jun 12 HTML / CSS
HTML5中的拖放实现详解
Aug 23 HTML / CSS
浅析图片上传及canvas压缩的流程
Jun 10 HTML / CSS
css让页脚保持在底部位置的四种方案
Jul 23 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
Sep 19 #HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
Sep 17 #HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
Sep 17 #HTML / CSS
HTML5新标签兼容——> 的两种方法
Sep 12 #HTML / CSS
html5使用canvas压缩图片的示例代码
Sep 11 #HTML / CSS
canvas像素点操作之视频绿幕抠图
Sep 11 #HTML / CSS
HTML5中使用json对象的实例代码
Sep 10 #HTML / CSS
You might like
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
js读取cookie方法总结
2014/10/31 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
关于JavaScript中的this指向问题总结篇
2017/07/23 Javascript
vue 组件中slot插口的具体用法
2018/04/03 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
python Django模板的使用方法
2016/01/14 Python
Python Flask基础教程示例代码
2018/02/07 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
在Python中实现替换字符串中的子串的示例
2018/10/31 Python
pycharm在调试python时执行其他语句的方法
2018/11/29 Python
对python:print打印时加u的含义详解
2018/12/15 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
Jdbc数据访问技术面试题
2012/03/30 面试题
机械制造与自动化应届生求职信
2013/11/16 职场文书
公司酒会主持词
2015/07/02 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
redis复制有可能碰到的问题汇总
2022/04/03 Redis
mysql查找连续出现n次以上的数字
2022/05/11 MySQL