图片压缩
当前压缩图片主要用于手机上传照片,设置了固定宽度
function compress(files) {
return new Promise((resolve) => {
if (files.type === 'image/gif') {
resolve(files)
}
const imgNode = new Image()
imgNode.src = URL.createObjectURL(files)
imgNode.onload = function(res) {
const myCanvas = document.createElement('canvas')
const width = 375 * 2
const height = (375 * 2 * imgNode.height) / imgNode.width
myCanvas.width = width
myCanvas.height = height
const painting = myCanvas.getContext('2d')
painting.drawImage(imgNode, 0, 0, width, height)
const base64 = myCanvas.toDataURL('image/jpeg', 0.8)
var arr = base64.split(',')
var mime = arr[0].match(/:(.*?);/)[1]
var bstr = atob(arr[1])
var n = bstr.length
var u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
resolve(new window.File([new Blob([u8arr], { type: mime })], files.name, { type: files.type }))
}
})
}