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的新特性介绍
Oct 31 HTML / CSS
基于css3实现漂亮便签样式
Mar 18 HTML / CSS
CSS3 中的@keyframes介绍
Sep 02 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
May 03 HTML / CSS
CSS实现进度条和订单进度条的示例
Nov 05 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
Nov 16 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
Jul 06 HTML / CSS
突破canvas语法限制 让他支持链式语法
Dec 24 HTML / CSS
使用HTML5进行SVG矢量图形绘制的入门教程
Feb 19 HTML / CSS
处理textarea中的换行和空格
Dec 12 HTML / CSS
详解如何获取localStorage最大存储大小的方法
May 21 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
Jan 20 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
php Static关键字实用方法
2010/06/04 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
PHP+MYSQL会员系统的登陆即权限判断实现代码
2011/09/23 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
JS控制文本框textarea输入字数限制的方法
2013/06/17 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python实现京东秒杀功能
2018/07/30 Python
Python中遍历列表的方法总结
2019/06/27 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
python中Mako库实例用法
2020/12/31 Python
基于python+selenium自动健康打卡的实现代码
2021/01/13 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
为什么要有struct关键字
2012/05/08 面试题
法务专员岗位职责
2014/01/02 职场文书
大学生求职自我评价
2014/01/16 职场文书
企业消防安全制度
2014/02/02 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
个人合伙协议书范本
2014/10/14 职场文书