当前位置: 首页 > news >正文

多张图片合成一张图片、兼容问题总结

一、首先要保障多张图片加载完成才能去合成张图片

1,传统实现方式

var img = [],
flag = 0,
mulitImg = [
_this.config.host + '/bargain.jpg',
_this.config.qrcodeUrl + '?appId=' + assibargain.qrCode.appId + '&page=' + assibargain.qrCode.page + '&scene=' + encodeURIComponent(assibargain.qrCode.scene) + '&time=' + new Date().getTime(),
];
var imgTotal = mulitImg.length;
for (var i = 0; i < imgTotal; i++) {
img[i] = new Image()
img[i].src = mulitImg[i]
// if (i == 1) {
// img[i].crossOrigin = 'Anonymous';
// }
img[i].onload = function () {
//第i张图片加载完成
flag++
if (flag == imgTotal) {
//全部加载完成
// context.drawImage(img[0], 0, 0, 750, 1155);
// context.drawImage(img[1], 270, 730, 220, 220);
// var imgdata = canvas.toDataURL('image/png');
// $('.bargain-pic-exp').html("<img width=85% class='cavasp' height=85% src='" + imgdata + "' alt='from canvas'/>");
}
}
}
2, 多张图片(结合ES6 Promise.all())实现—自行查找
二,在测试过程中图一个域名合成是没有问题,在调试中使用的是外域的域名过程报错
外域的域名
 
window. location. protocol +  '//jzt.daojia.com/httpservice/mina/qrcode'
当前的域名
window. location. protocol +  '//' +  window. location. host,
assibargain.js:55 Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.

at Image.img.(anonymous function).onload (https://static.djtest.cn/isdfe/coupon2.0/src/assibargain/assibargain.js:55:46)

上网查找解决方案

img.crossOrigin = 'Anonymous';

相应的外域的域名支持当前域名的跨域,做完之后测试谷歌没有问题

三、经过一段时间,发现safari

Cross-origin image load denied by Cross-Origin Resource Sharing policy.

可能走得是缓存,加上时间戳

_this.config.qrcodeUrl + '?appId=' + assibargain.qrCode.appId + '&page=' + assibargain.qrCode.page + '&scene=' + encodeURIComponent(assibargain.qrCode.scene) + '&time=' + new Date().getTime(),


转载于:https://www.cnblogs.com/yayaxuping/p/8950312.html

相关文章:

  • git 配置多个账户
  • CentOS下安装php扩展exif
  • Alembic基本使用
  • 机器学习中特征的处理及选择
  • Prometheus Querying Function rate() vs irate()
  • 多线程基础篇(3)——初试锁
  • java获取文件列表,并按照目录的深度及文件名的拼音的升序排列
  • 爬虫大作业
  • 散列表解决冲突的办法
  • 访谈:摩尔定律后时代,看13位行业专家如何看量子计算机的未来?
  • 青云QingCloud黄允松:关于云计算未来的三个预测
  • slim.flatten——将输入扁平化但保留batch_size,假设第一维是batch
  • 深入浅出MyBatis:MyBatis插件及开发过程
  • 解决Mybatis配置ORM映射 时分秒都为0
  • Spring Cloud入门教程-Hystrix断路器实现容错和降级
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【个人向】《HTTP图解》阅后小结
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • django开发-定时任务的使用
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript-Array类型
  • Java反射-动态类加载和重新加载
  • Java知识点总结(JavaIO-打印流)
  • Linux Process Manage
  • node和express搭建代理服务器(源码)
  • Redis字符串类型内部编码剖析
  • Vue官网教程学习过程中值得记录的一些事情
  • vue总结
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 利用jquery编写加法运算验证码
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 巧用 TypeScript (一)
  • 算法-图和图算法
  • 用简单代码看卷积组块发展
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • $GOPATH/go.mod exists but should not goland
  • (06)金属布线——为半导体注入生命的连接
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (pytorch进阶之路)扩散概率模型
  • (定时器/计数器)中断系统(详解与使用)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .gitignore文件设置了忽略但不生效
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET 中的轻量级线程安全
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .NET项目中存在多个web.config文件时的加载顺序