使用html2canvas生成海报,阿里云oss图片或网络图片报跨域问题

背景

项目中需要一个生成海报功能,因为图片是上传到了阿里云oss上面,所以导致html2canvas截图得时候,图片显示空白然后配置html2canvas日志功能 logging: false, 发现图片报了跨域问题,首先开启了html2canvas useCORS:true, 发现并没有什么用。

解决思路

解决问题搜索过程中发现一篇大佬的文章,说阿里云服务器配置允许跨域之后,还是不行得情况下,将浏览器disabled cache 勾选上,试了下发现可以正常生成海报,但是也不可能给每个用户教他们去开始这个disabled cache 。此时想到是否可以使用请求来请求图片转换一下,碰巧又发现一篇文章可以将图片地址发送一次请求,获取请求返回得值作为图片路径,但是发现还是报错跨域,然后对比开启disabled cache,发现请求头中多出一个Cache-Control :no-cache ,于是设置请求头,至此跨域问题解决,下面上代码

/*** 点击图片将需要生成海报得oss图片做下请求*/
checkewm(ewm) {this.tempPoster = Object.assign({}, ewm);this.boxShow = true;this.getImage(this.tempPoster.pic,'dialogBgImg')this.getImage(this.ewm,'dialogEwm')
},
/*** 将oss图片做一次请求,转换下,网络路径图片都可以* url: 网络图片得路径* imgId: 网络图片img标签得id*/
getImage(url,imgId) {console.log(url,imgId)var xhr = new XMLHttpRequest();xhr.open('get', url, true);// 设置请求头(这一步得设置不然oss图片还是跨域)xhr.setRequestHeader("Cache-Control", "no-cache");xhr.responseType = 'blob';xhr.onload = function () {if (this.status == 200) {document.getElementById(imgId).src =  URL.createObjectURL(this.response);console.log('this.response',this.response)}};xhr.send();
},
/*** 生成海报并下载得方法*/
createdimg() {// 转换需要生成海报得图片// this.$refs.imageWrapper 需要截图得容器html2canvas(this.$refs.imageWrapper, {useCORS: true,logging: false,}).then((canvas) => {// 创建a标签下载const link = document.createElement("a"); // 创建a标签link.href = canvas.toDataURL(); // 是canvas对象的一种方法,用于将canvas对象转换为base64位编码link.setAttribute("download", "图片canvas.png"); // 利用了a标签的download 来下载 canvas图片link.style.display = "none"; // 将图片隐藏起来document.body.appendChild(link); // 插入到其中link.click();});},

使用html2canvas生成海报,阿里云oss图片或网络图片报跨域问题相关推荐

  1. 阿里云OSS 图片处理

    首先放个阿里云OSS图片处理接口文档 阿里云官方地址 oss图片处理接口文档 我们有时会抱怨用户上传的图文中图片文件大了(假如说3M的图片).导致生成的网页打开速度慢,怎么办呢? 问题分析:网页打开慢 ...

  2. 阿里云OSS 图片处理api(custom)

    首先放个阿里云OSS图片处理接口文档 阿里云官方地址 OSS 图片处理接口文档 我们有时会抱怨用户上传的图文中图片文件大了(假如说3M的图片).导致生成的网页打开速度慢,怎么办呢? 问题分析:网页打开 ...

  3. 小书匠绑定阿里云oss+阿里云oss图片url永久有效设置--菜鸟小回

    小书匠绑定阿里云oss+阿里云oss图片url永久有效设置 一.开通阿里云oss服务阿里云oss服务 二.创建Bucket 三.文件管理创建image/ 目录 四.进入小书匠绑定 访问入口:如图位置复 ...

  4. **关于阿里云oss图片批量上传问题解析**

    关于阿里云oss图片批量上传问题解析 背景 最近在项目开发过程中遇到的问题,消耗了比较久的时间,过程曲折,虽然最终达到目的,但是鉴于各种常用的云数据在对象存储方面大同小异,所以记录一下. 理一下思路: ...

  5. 阿里云OSS图片生成缩略图和获取视频的封面方法

    ?x-oss-process=image/resize,m_fill,w_200,quality,q_60 在图片的地址后面加上以上代码,可以生成缩略图 resize 调整大小 quality 清晰度 ...

  6. 阿里云OSS图片服务器使用,不要怀疑,可以用

    不废话了,oss是什么这些去姑够或度娘查: 我一springboot项目为例, 配置oss服务器 首先配置图片服务器的配置信息 图中oss为oss服务器的配置信息,tmpFilePath是本地存放临时 ...

  7. flutter阿里云OSS图片上传

    一.选择图片: 使用插件 image_picker: "^0.5.0+3" 使用image_picker选择图片,代码如下: // 相机拍照或者从图库选择图片pickImage(c ...

  8. file does not exist 阿里云OSS图片上传遇到的问题

    ./uploads\20171209/0497b8dd16e72c6fcf5bfd552f535a81.png file does not exist 原代码 function aliyun($sav ...

  9. .Net6阿里云OSS图片上传

    1:申请注册阿里云账号,找到AccessKey管理 2:添加并创建AccessKey,获取AccessKey ID. AccessKey Secret的值 3:AccessKey ID. Access ...

  10. 阿里云OSS图片上传类

    1.阿里云基本函数 /*** 把本地变量的内容到文件* 简单上传,上传指定变量的内存值作为object的内容*/ public function putObject($imgPath,$object) ...

最新文章

  1. 缓冲区Buffer-Buffer操作基本API
  2. ECharts 3.0 初学感想及学习中遇到的瓶颈
  3. Web性能瓶颈查找经验总结
  4. 实践—一个3D旋转相册
  5. 13.TCP/IP 详解卷1 --- IGMP : Internet 管理组协议
  6. 第三季-第27课-Shell脚本高级编程
  7. win11安装IIS步骤—图解
  8. 微信表情图像代表什么意思_微信表情含义图解大全(微信58个表情含义图)
  9. c语言中while循环语句的作用,c语言中while的用法
  10. linux iscsi 发起程序,怎么查看进程的发起程序,iscsi发起程序是什么
  11. 1000以内的水仙花数有哪些?(3位数的水仙花数有哪些?)
  12. ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程
  13. STM32H743 USART1 LL 库
  14. 无人再谈“永恒牛市”
  15. fleck 客户端_C#中使用Fleck实现WebSocket通信简例
  16. 从头搭建DVWA平台
  17. 2022年全球市场碳化硅滑动轴承总体规模、主要生产商、主要地区、产品和应用细分研究报告
  18. matlab使照片卡通化,怎么样用matlab设计动画直接画出奥运五环
  19. 第三章 页表管理(Page Table Management)
  20. PhotoZoom 8全新版免费手机图片放大工具

热门文章

  1. Python读写欧姆龙PLC(本工作是由具体项目而开展的)
  2. lucene.net和(pangu)盘古分词 搜索引擎的简单实现
  3. 当显存不够时是否会调用共享GPU内存?
  4. 【转】RTF格式分析
  5. html背景图片自动铺满屏幕,【CSS背景图片页面自适应充满屏幕】
  6. [FJOI2018]所罗门王的宝藏
  7. 嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法
  8. linux之kubuntu挂载硬盘
  9. javascript书签工具
  10. 金鳞岂是池中物,一遇风云便化龙