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

【场景】

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

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

【问题】

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

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

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

?
1
2
3
4
5
6
7
8
9
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);
}

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

控制台报错如下:

【最终解决方法】

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

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

转载于:https://www.cnblogs.com/good10000/p/10590237.html

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

  1. canvas生成图片toDataURL报错的原因和解决方法

    canvas生成图片toDataURL报错的原因和解决方法 参考文章: (1)canvas生成图片toDataURL报错的原因和解决方法 (2)https://www.cnblogs.com/suna ...

  2. fabricJs中给canvas添加跨域背景图片报错Tainted canvases may not be exported

    最近几期我想分享一下我的项目中使用vue+fabric.js过程中遇到的坑. 就比如给canvas加背景时,就会出现跨域的报错提示. 我用的是vue-element相关框架,在此不多做赘述,后面再出专 ...

  3. 解决浏览器跨域加载本地文件报错 Access to script at ‘xxx‘ from origin ‘null‘ has been blocked by CORS policy

    报错: Failed to load resource: net::ERR_FILE_NOT_FOUND Access to script at 'xxx' from origin 'null' ha ...

  4. Latex引入新宏包siunitx导致的报错:Command \fs already defined. \newcommand{\fs}{\CJKfamily{fs}}

    出错原因 用我的英伦腔翻译一下这个报错信息,不难看出是\fs命令在引入的宏包中已经被定义,而文章使用了\newcommand,无辜的以为\fs命令在之前没有被定义,显然就会出错(\fs你城府好深啊. ...

  5. h5跨域访问图片_h5标签canvas关于getImageData跨域的问题

    h5标签canvas关于getImageData跨域的问题 在学习h5的时候,canvas标签中getImageData()报错:security error! 具体代码如下(chrome浏览器): ...

  6. vue吸管拾色器、利用canvas获取坐标点颜色、canvas获取坐标点颜色图片跨域、图片转base64、colorPicker

    vue吸管拾色器.利用canvas获取坐标点颜色.canvas获取坐标点颜色图片跨域.图片转base64.colorPicker 1.需求:表格中主颜色和次颜色是需要从缩略图上吸取颜色,然后渲染色块, ...

  7. 使用canvas的toDataURL方法将图片转为base64报错:Tainted canvases may not be exported

    toDataURL()报错 在使用Canvas对图片进行裁切功能时,用到了toDataURL方法. 在调试过程中,发现执行到该方法是会报以下错误: Uncaught DOMException: Fai ...

  8. 谷歌浏览器升级到91出现跨域问题,导致cookie保存的sessionId不一样

    先来说一下问题: 谷歌浏览器升级到91之后出现一个跨域问题,导致cookie保存的接口sessionId不一致,从而后台出现session不一致问题.如下图: 这是第一个接口: 这是第二个接口 这本应 ...

  9. canvas生成海报toDataUrl报错,解决方案

    微信公众号H5页面,生成带参数二维码海报的思路. 一.生成带参数二维码 使用插件phpqrcode,这个功能在之前的文章中有记录.不在赘述. 二.生成canvas画布 先将海报内容通过cavans画出 ...

最新文章

  1. 《Linux4.0设备驱动开发详解》笔记--第十二章:Linux设备驱动的软件架构思想
  2. RIP路由协议快速入门(二)
  3. 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)...
  4. CMake编译cuda出错
  5. mysql之存储引擎的选择
  6. 用定时中断来接收红外遥控信号
  7. Boost:bimap双图修改的测试程序
  8. 【算法系列之六】两整数之和
  9. NYOJ-部分和问题(dfs)
  10. 在Kibana上查看Apache日志
  11. 10.凤凰架构:构建可靠的大型分布式系统 --- 可观测性
  12. Cisco Packet Tracer思科模拟器单臂路由的配置
  13. 愿得一人心——祭奠······埋葬我218的爱情
  14. 基于阿里云的API简介
  15. 批处理命令更改Windows鼠标滑轮滚动方向
  16. 信息安全体系建设☞流量可视化(2)sflow
  17. matlab绘制心形函数
  18. 商标被撤三了,重新注册有用吗?
  19. mysqldump单个库导出_mysql mysqldump只导出表结构或只导出数据的实现方法
  20. 人口收入普查数据探索

热门文章

  1. M1芯片处理器如何安装adobe全家桶 PR/PS/AE/LR/AU/AI等 解决安装adobe闪退问题 Adobe全部支持MAC苹果 M1芯片处理器
  2. 2011年10月高等教育国际金融全国统一命题考试
  3. [计算机毕业设计]深度相机稀疏点云分类
  4. 长尾理论作者称互联网商业模式亟待创新
  5. Java实现HTTPS加密、解密过程
  6. 【Microsoft Azure 的1024种玩法】七十二.使用NodeJS手动编写调用Azure Cognitive Services Translator API代码获取其支持翻译的语言集
  7. (30)整数直接与分数相乘
  8. Android RxJava操作符的学习---组合合并操作符---联合判断多个事件
  9. oracle update 结合更新
  10. linux mv 非空文件夹,Linux基本命令——cp、mv、rm、tree、mkdir、rmdir