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实现的下拉菜单效果示例
Jan 22 HTML / CSS
css3隔行变换色实现示例
Feb 19 HTML / CSS
CSS3 中的@keyframes介绍
Sep 02 HTML / CSS
一款纯css3实现的动画加载导航
Oct 08 HTML / CSS
CSS3绘制超炫的上下起伏波动进度加载动画
Apr 21 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
Dec 22 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
Jan 05 HTML / CSS
html5 学习简单的拾色器
Sep 03 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
Jan 21 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
May 07 HTML / CSS
HTML怎么设置下划线?html文字加下划线方法
Dec 06 HTML / CSS
html原生table实现合并单元格以及合并表头的示例代码
May 07 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开发入门教程之面向对象
2006/12/05 PHP
php实现TCP端口检测的方法
2015/04/01 PHP
非常实用的php验证码类
2016/05/15 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
vue分页组件table-pagebar使用实例解析
2020/11/15 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
nodejs 生成和导出 word的实例代码
2018/07/31 NodeJs
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
Python调用C++程序的方法详解
2017/01/24 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
python实现简单多人聊天室
2018/12/11 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
世界上第一个水枕头:Mediflow
2018/12/06 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
如何安装ruby on rails
2014/02/09 面试题
普通大学毕业生自荐信范文
2014/02/23 职场文书
小学生新年寄语
2014/04/03 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
初中学校对照检查材料
2014/08/19 职场文书
离婚协议书怎么写
2014/09/12 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
自信主题班会
2015/08/14 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
python开发人人对战的五子棋小游戏
2022/05/02 Python