|
@@ -1,15 +1,15 @@
|
|
|
export function resize(base64, callback) {
|
|
|
const w = 1440
|
|
|
- var newImage = new Image()
|
|
|
- var quality = 0.8 //压缩系数
|
|
|
+ let newImage = new Image()
|
|
|
+ let quality = 0.8 //压缩系数
|
|
|
newImage.src = base64
|
|
|
newImage.setAttribute('crossOrigin', 'Anonymous')
|
|
|
- var imgWidth, imgHeight
|
|
|
+ let imgWidth, imgHeight
|
|
|
newImage.onload = function () {
|
|
|
imgWidth = this.width
|
|
|
imgHeight = this.height
|
|
|
- var canvas = document.createElement('canvas')
|
|
|
- var ctx = canvas.getContext('2d')
|
|
|
+ let canvas = document.createElement('canvas')
|
|
|
+ let ctx = canvas.getContext('2d')
|
|
|
if (Math.max(imgWidth, imgHeight) > w) {
|
|
|
if (imgWidth > imgHeight) {
|
|
|
canvas.width = w
|
|
@@ -25,16 +25,11 @@ export function resize(base64, callback) {
|
|
|
}
|
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height)
|
|
|
ctx.drawImage(this, 0, 0, canvas.width, canvas.height)
|
|
|
- var base64 = canvas.toDataURL('image/jpeg', quality) // 执行压缩
|
|
|
+ let base64 = canvas.toDataURL('image/jpeg', quality) // 执行压缩
|
|
|
while (base64.length / 1024 > 500) {
|
|
|
quality -= 0.01
|
|
|
base64 = canvas.toDataURL('image/jpeg', quality)
|
|
|
}
|
|
|
- // 防止最后一次压缩低于最低尺寸,只要quality递减合理,无需考虑
|
|
|
- // while (base64.length / 1024 < 50) {
|
|
|
- // quality += 0.001;
|
|
|
- // base64 = canvas.toDataURL("image/jpeg", quality);
|
|
|
- // }
|
|
|
- callback(base64) //必须通过回调函数返回,否则无法及时拿到该值
|
|
|
+ callback(base64)
|
|
|
}
|
|
|
}
|