随身笔记
随身笔记

js处理heic(heif)格式的图片

import heic2any from 'heic2any';

const fileReader = new FileReader();
const fileReaderBuffer = new FileReader();

const file  // 图片文件

// 加载图片
function loadImg(img) {
  return new Promise((resolve, reject) => {
    img.onload = (e) => {
      resolve(e.target.result);
    };
    img.onerror = (e) => {
      reject(e);
    };
  });
}

// 压缩图片
fileReader.onload = async (e) => {
  const base64 = e.target.result;
  const img = new Image();
  let imgData = null;
  img.src = base64;
  img.filename = file.name;
  try {
    await loadImg(img);
    imgData = await compressImg(img);
    resolve(imgData);
  } catch (error) {
    console.error(error);
    resolve({
      file: null,
      url: ''
    });
  }
};

// 读取是否是heic格式图片
fileReaderBuffer.onload = async () => {
  const type = getFileType(fileReaderBuffer);
  if (type === 'unknown') {
    console.error('unknown image type');
    resolve({
      file: null,
      url: ''
    });
    return;
  }
  if (type.includes('/heic')) {
    heic2any({ blob: file, toType: 'image/jpeg' }).then((blob) => {
      fileReader.readAsDataURL(blob);
    }).catch(() => {
      resolve({
        file: null,
        url: ''
      });
    });
    return;
  }
  fileReader.readAsDataURL(file);
};

fileReaderBuffer.readAsArrayBuffer(file);

随身笔记

js处理heic(heif)格式的图片
import heic2any from 'heic2any'; const fileReader = new FileReader(); const fileReaderBuffer = new FileReader(); const file // 图片文件 // 加载图片 function loadI…
扫描二维码继续阅读
2021-06-18