<script>
// 引入image-conversion
import imageConversion from 'image-conversion'
methods: {
// 第一種,不考慮圖片長寬,只考慮圖片大小的狀況,圖片超過4M就壓縮
beforeUpload (file) {
return new Promise((resolve, reject) => {
let isLt2M = file.size / 1024 / 1024 < 4 // 斷定圖片大小是否小於4MB
if (isLt2M) {
resolve(file)
}
console.log(file)
// 壓縮到400KB,這裏的400就是要壓縮的大小,可自定義
imageConversion.compressAccurately(file, 400).then(res => {
// console.log(res)
resolve(res)
})
})
},
//第二種,圖片大小超過4M,長度超過2000就壓縮
beforeUpload2 (file) {
// 圖片不大於4m,寬度不大於2000
return new Promise((resolve, reject) => {
let _URL = window.URL || window.webkitURL
let isLt2M = file.size / 1024 / 1024 > 4 // 斷定圖片大小是否小於4MB
// 這裏須要計算出圖片的長寬
let img = new Image()
img.onload = function () {
file.width = img.width // 獲取到width放在了file屬性上
file.height = img.height // 獲取到height放在了file屬性上
let valid = img.width > 2000 // 圖片寬度大於2000
// console.log(11, file)
// 這裏我只判斷了圖片的寬度,compressAccurately有多個參數時傳入對象
if (valid || isLt2M) {
imageConversion.compressAccurately(file, {
size: 400,
width: 2000
}).then(res => {
// console.log(33, res)
resolve(res)
})
} else resolve(file)
}
// 須要把圖片賦值
img.src = _URL.createObjectURL(file)
})
},
}
</script>
這樣就實現了圖片的自動壓縮功能,這個組件還有一些其餘功能,使用的時候若是有其餘需求,能夠看下文檔https://github.com/WangYuLue/image-conversion