用法:
compressImg(target.files[0], 2).then(base64 => {
console.log(base64)
// 在这里实现压缩后的上传操作
// ...
}).catch(err => { // 压缩异常
Indicator.close()
_this.$toast(err)
})
详细见代码注释
/**
* 图片压缩
* @param file 图片原文件【必传】
* @param maxDefaultSize 压缩后的最大值限制,默认10M
* @param quality 压缩后的质量,取值范围:(0, 1], 默认值:1
* @param type 压缩后的文件后缀名, 默认值:'jpeg'
* @returns {Promise<any>}
*/
export function compressImg (file = null, maxDefaultSize = 10, quality = 1, type = 'jpeg') {
let imgQuality = quality > 1 ? 1 : quality <= 0 ? 0.1 : quality // imgQuality取值范围:(0, 1]
let reader = new FileReader()
let img = new Image()
// 图片转base64后的大小
let imgSize = 0
// 选择的文件是图片
if (file.type.indexOf('image') === 0) {
reader.readAsDataURL(file)
}
// 文件base64化,以便获知图片原始尺寸
reader.onload = functi