今天后端接口返回的图片是一个阿里云地址,我就需要将这个地址转为base64
思路就是将图片先画在canvas上,再用toDataURL转成base64 如果需要二进制数组,可以将得到的base64数据进一步转换
var image = new Image()
//解决图片跨域,不然会报错
image.setAttribute('crossOrigin', 'anonymous');
image.src = “这是返回的链接图片地址”
image.onload = function(){
//获取创建好的canvas
var canvas = document.getElementById("canvas")
var ctx = canvas.getContext("2d")
//将图片绘制到canvas上
ctx.drawImage(image, 0, 0);
//将画布转化为base64的数据
var dataURL = canvas.toDataURL('image/png')
//将获取到的base64数据转为二进制数组
var arr = dataURL.split(','),
bstr = atob(arr[1]),
//图片后缀
mime = arr[0].match(/:(.*?);/)[1],
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
var blob = new Blob([u8arr], {type:mime })
//blob的地址
var url = URL.createObjectURL(blob)
}