export const compressImg = (filePath, width = 500) => {
return new Promise((resolve, reject) => {
if (!filePath) return reject()
let img = new Image()
img.setAttribute('crossOrigin', 'anonymous')
img.onload = (e) => {
let whRate = 1
let imgOriginalWidth
let imgOriginalHeight
if (e?.path?.[0]?.width) {
imgOriginalWidth = e.path[0].width
imgOriginalHeight = e.path[0].height
} else {
imgOriginalWidth = img.width
imgOriginalHeight = img.height
}
whRate = imgOriginalWidth / imgOriginalHeight
let canvasBox = document.createElement('div')
let canvas = document.createElement('canvas')
canvasBox.className = 'compressImg_canvas_class'
canvasBox.appendChild(canvas)
document.body.appendChild(canvasBox)
let context = canvas.getContext('2d')
let cW = width
let cH = width / whRate
canvas.width = cW
canvas.height = cH
context.drawImage(img, 0, 0, cW, cH)
canvas.toBlob((blob) => {
setTimeout(() => {
document.body.removeChild(canvasBox)
}, 1)
return resolve(blob)
})
}
img.src = filePath
})
}