赞
踩
let src =
'data:image/png;base64,' +
window.btoa(
new Uint8Array(error).reduce(
(data, byte) => data + String.fromCharCode(byte), ''
)
);
将ArrayBuffer转换为base64就可以提供img标签的src进行显示了
window.btoa方法可以将一个二进制字符串(例如,将字符串中的每一个字节都视为一个二进制数据字节)编码为 Base64 编码的 ASCII 字符串。
const state = reactive({
imgFormDatas: new FormData(),
});
const downloadImg = url => {
let image = new Image();
image.crossOrigin = '';
image.src = url;
image.onload = function () {
state.imgFormDatas = base64ToFormData(getBase64Image(image));
};
image.onerror = function () {
Toast.text('图片加载错误');
};
};
const getBase64Image = img => {
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase();
var dataURL = canvas.toDataURL('image/' + ext);
return dataURL;
};`
const base64ToFormData = (base64String) => {
// console.log(base64String, 'base64String');
//这里对base64串进行操作,去掉url头,并转换为byte
let imgFormDatas = new FormData();
let bytes = window.atob(base64String.split(',')[1]);
let array = [];
for (let i = 0; i < bytes.length; i++) {
array.push(bytes.charCodeAt(i));
}
let blob = new Blob([new Uint8Array(array)], { type: 'image/jpeg' });
imgFormDatas.append('file', blob, Date.now() + '.jpg');
return imgFormDatas;
};
主要使用的方法:
window.btoa
window.atob
new Blob
new FormData()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。