图片转换 (File、Blob、base64)

2024-08-26  本文已影响0人  码农界四爷__King
https://blog.csdn.net/weixin_53791978/article/details/131152857

BLOB 与 File

【1】BLOB 转 File
const file = new File([blob], fileName, { type: fileType, lastModified: Date.now() });
【2】File 转 BLOB
const blob = URL.createObjectURL(file);

BLOB 与 base64

【1】BLOB(url) 转 base64
const image = new Image();
image.src = imgBlob;
image.onload = () => {
  // 构建canvas节点
  const canvas = document.createElement('canvas');
  canvas.width = image.width;
  canvas.height = image.height;
  const context = canvas.getContext('2d');
  context.drawImage(image, 0, 0, image.width, image.height);
  // 转换
  const imgBase64 = canvas.toDataURL();
  console.log(imgBase64);
};

【2】base64 转 BLOB
// 分割base64
const temp = base64Data.split(','); 
// 获取类型
const mime = arr[0].match(/:(.*?);/)[1];
// 解码使用 base-64 编码的字符串
const raw = window.atob(temp[1]);
const rawLength = raw.length;
// base64文件数据读取
const uInt8Array = new Uint8Array(rawLength);
for (let i = 0; i < rawLength; i += 1) {
  uInt8Array[i] = raw.charCodeAt(i);
}
const blob = new Blob([uInt8Array], { type: mime });

File 与 base64:

【1】File 转 base64
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function (e) {
  // e.target.result 即为base64结果
  console.log(e.target.result);
};
【2】base64 转 File
// 分割base64
const arr = base64Data.split(','); 
// 获取类型
const mime = arr[0].match(/:(.*?);/)[1];
// 解析base字符串
const bstr = atob(arr[1]); 
const n = bstr.length; 
// base64文件数据读取
const u8arr = new Uint8Array(n);
while (n--) {
  u8arr[n] = bstr.charCodeAt(n);
}
const file =  new File([u8arr], filename, { type: mime });
上一篇下一篇

猜你喜欢

热点阅读