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);