vue+element-ui上传图片压缩
详情请查看element-ui
官网
html
<el-upload
:action="uploadUrl"
list-type="picture-card"
multiple
accept=".png,.jpg,.jpeg,.bmp"
:on-change="change"
:before-upload="beforeUpload"
:on-success="uploadSuccess">
<i class="el-icon-plus"></i>
</el-upload>
script
methods:{
dataURItoBlob(dataURI, type) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: type});
},
beforeUpload(file) {
const _this = this
return new Promise(resolve => {
let isLt2M = file.size / 1024 / 1024 < 1; // 判定图片大小是否小于4MB
if (isLt2M) {
console.log("小于1m");
resolve(file);
}
const reader = new FileReader()
const image = new Image()
image.onload = (imageEvent) => {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const width = image.width * _this.imgQuality
const height = image.height * _this.imgQuality
canvas.width = width;
canvas.height = height;
context.clearRect(0, 0, width, height);
context.drawImage(image, 0, 0, width, height);
const dataUrl = canvas.toDataURL(file.type);
const blobData = _this.dataURItoBlob(dataUrl, file.type);
resolve(blobData)
}
reader.onload = (e => { image.src = e.target.result; });
reader.readAsDataURL(file);
})
},
}
传完图片右键另存为,查看图片,与原图相比,确实压缩了
亲测有效 ! :D ❀❀