博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
safari浏览器canvas图片crossOrigin跨域失败
阅读量:5057 次
发布时间:2019-06-12

本文共 1021 字,大约阅读时间需要 3 分钟。

最近在做一个canvas绘图的项目,需要在canvas上引入一张跨域图片,当调drawImagegetImageData API时会提示跨域错误

解决方案一

在访问图片response新增Access-Control-Allow-Origin:*

canvas获取图片是,新增crossOrgin属性

const img = new Image();img.crossOrigin = 'anonymous';img.src = 'xxx.png';img.onload = function() {    console.log('图片载入完成');}

实测发现在安卓和chrome中完美解决,但是在苹果和safari浏览器中还是报跨域错误,又经过调研,得到以下解决方案

解决方案二

通过XMLHttpRequest对象获取图片的blob数据,然后再传递给图片src,就能完美解决

function getImageBlob(url, callback) {    const xhr = new XMLHttpRequest();    xhr.open('GET', url, true);    xhr.responseType = 'blob';    xhr.onload = function () {        if (parseInt(this.status, 10) === 200) {            if (typeof callback === 'function') {                callback(URL.createObjectURL(this.response));            }        }    };    xhr.send();}function getImage(e) {    const img = new Image();    img.src = e;    img.onload = function () {        ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, 400, 400);    };}getImageBlob('xxx.png', getImage);

转载于:https://www.cnblogs.com/cococe/p/10557339.html

你可能感兴趣的文章
DOM in Angular2
查看>>
html 二级联动(省市联动)
查看>>
KMP字符串匹配算法及next前缀数组的应用
查看>>
文件上传
查看>>
kettle转换提高性能拆分转换步骤_20161201
查看>>
Web程序和应用程序服务器[转]
查看>>
数组求和
查看>>
enyo官方开发入门教程翻译一Key Concepts之Object Lifecycle
查看>>
四种JavaEE架构简介
查看>>
不用vue-cli搭建vue-webpack-express-mongoDB项目
查看>>
csu 1598(KMP)
查看>>
4. Scala程序流程控制
查看>>
JSP中 setautosubmit的使用
查看>>
win7系统中 python2、python3安装后再安装插件时遇到的问题
查看>>
SpringMVC+JXL 上传Excel2003文件并导入数据库
查看>>
约瑟夫环问题较简单的解决办法
查看>>
shell无名管道线的实现(父子进程实现对管道的一端读另一端写)
查看>>
FTP操作类( 拷贝、移动、删除文件/创建目)
查看>>
python Quicksort demo
查看>>
个人-GIT使用方法
查看>>