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 10 HTML / CSS
纯CSS3绘制打火机动画火焰效果
Jul 18 HTML / CSS
如何用border-image实现文字气泡边框的示例代码
Jan 21 HTML / CSS
css3实现二维码扫描特效的示例
Oct 29 HTML / CSS
HTML5应用之文件上传
Dec 30 HTML / CSS
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
Feb 01 HTML / CSS
使用html2canvas将页面转成图并使用用canvas2image下载
Apr 04 HTML / CSS
web页面录屏实现
Feb 12 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
Jan 29 HTML / CSS
canvas离屏技术与放大镜实现代码示例
Aug 31 HTML / CSS
使用canvas一步步实现图片打码功能的方法
Jun 17 HTML / CSS
详解window.open被浏览器拦截的解决方案
Jul 18 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
Pro JavaScript Techniques学习笔记
2010/12/28 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
使用JavaScript实现连续滚动字幕效果的方法
2015/07/07 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
JavaScript制作简单分页插件
2016/09/11 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
深入理解AngularJs-scope的脏检查(一)
2017/06/19 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python字符串格式化输出代码实例
2019/11/22 Python
python画环形图的方法
2020/03/25 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
升职自荐书范文
2013/11/28 职场文书
商务会议邀请函
2014/01/09 职场文书
优秀的应届生自荐信
2014/05/23 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
Python学习之包与模块详解
2022/03/19 Python