export function urlToBase64(url: string, mineType?: string): Promise { return new Promise((resolve, reject) => { let canvas = document.createElement('CANVAS') as Nullable const ctx = canvas!.getContext('2d') const img = new Image() img.crossOrigin = '' img.onload = function () { if (!canvas || !ctx) { return reject() } canvas.height = img.height canvas.width = img.width ctx.drawImage(img, 0, 0) const dataURL = canvas.toDataURL(mineType || 'image/png') canvas = null resolve(dataURL) } img.src = url }) } /** * 将文件对象转换为base64格式 * @param file 文件对象,通常来自input[type="file"]的选择 * @returns Promise 返回base64格式的字符串 */ export function fileToBase64(file: File): Promise { return new Promise((resolve, reject) => { if (!file) { reject(new Error('文件不能为空')) return } // 验证是否为图片文件 if (!file.type.startsWith('image/')) { reject(new Error('请上传图片文件')) return } const reader = new FileReader() reader.readAsDataURL(file) reader.onload = () => { resolve(reader.result as string) } reader.onerror = (error) => { reject(error) } }) }