vue 图片转Base64
1.图片地址转Base64 有回调
getBase64(url, callback) {
let Img = new Image(),
dataURL = '';
let imgExt = this.extname(url);
Img.src = url +"?v=" + Math.random(); // 处理缓存,fix缓存bug,有缓存,浏览器会报错;
Img.setAttribute("crossOrigin", 'Anonymous') // 解决控制台跨域报错的问题(没用就跟后台沟通添加跨域)
Img.onload = function () { //要先确保图片完整获取到,这是个异步事件
let canvas = document.createElement("canvas"), //创建canvas元素
width = Img.width, //确保canvas的尺寸和图片一样
height = Img.height;
canvas.width = width;
canvas.height = height;
canvas.getContext("2d").drawImage(Img, 0, 0, width, height); //将图片绘制到canvas中
dataURL = canvas.toDataURL('image/'+imgExt); //转换图片为dataURL
callback ? callback(dataURL) : null; //调用回调函数
};
},
调用
this.getBase64(res.data.data.url, (dataURL) => {
console.log(dataURL) //返回的Base64
})
1.1图片地址转Base64 无回调
getBase64(url) {
var that = this
let Img = new Image(),
dataURL = '';
let imgExt = this.extname(url);
Img.src = url +"?v=" + Math.random(); // 处理缓存,fix缓存bug,有缓存,浏览器会报错;
Img.setAttribute("crossOrigin", 'Anonymous') // 解决控制台跨域报错的问题(没用就跟后台沟通添加跨域)
Img.onload = function () { //要先确保图片完整获取到,这是个异步事件
let canvas = document.createElement("canvas"), //创建canvas元素
width = Img.width, //确保canvas的尺寸和图片一样
height = Img.height;
canvas.width = width;
canvas.height = height;
canvas.getContext("2d").drawImage(Img, 0, 0, width, height); //将图片绘制到canvas中
dataURL = canvas.toDataURL('image/'+imgExt); //转换图片为dataURL
that.changeUrl(dataURL) //需要调用Base64的函数
};
},