export function resize(base64, callback) { const w = 1440 let newImage = new Image() let quality = 0.8 //压缩系数 newImage.src = base64 newImage.setAttribute('crossOrigin', 'Anonymous') let imgWidth, imgHeight newImage.onload = function () { imgWidth = this.width imgHeight = this.height let canvas = document.createElement('canvas') let ctx = canvas.getContext('2d') if (Math.max(imgWidth, imgHeight) > w) { if (imgWidth > imgHeight) { canvas.width = w canvas.height = (w * imgHeight) / imgWidth } else { canvas.height = w canvas.width = (w * imgWidth) / imgHeight } } else { canvas.width = imgWidth canvas.height = imgHeight quality = 0.8 } ctx.clearRect(0, 0, canvas.width, canvas.height) ctx.drawImage(this, 0, 0, canvas.width, canvas.height) let base64 = canvas.toDataURL('image/jpeg', quality) // 执行压缩 while (base64.length / 1024 > 500) { quality -= 0.01 base64 = canvas.toDataURL('image/jpeg', quality) } callback(base64) } }