1 Star 0 Fork 1

HUB2EE/前端开发经验迭代ing

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
vue+element-ui upload图片上传前进行压缩.vue 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
子龙 提交于 2021-09-18 10:47 . ploplkopl
安装image-conversion包
npm i image-conversion --save
<template>
<div class="select_invoice">
<el-upload
class="upload-demo" :multiple="true" :action="uploadPath" :data="uploadData" accept="bmg,.png,.jpg,.jpeg" :before-upload="beforeUpload" :on-success="handleSuccess" :on-error="hanldeError" multiple
:limit="20">
<el-button size="small" type="primary">添加图片</el-button>
</el-upload>
</div>
</template>
// 引入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>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/since2020/some_tips_of_css_js.git
git@gitee.com:since2020/some_tips_of_css_js.git
since2020
some_tips_of_css_js
前端开发经验迭代ing
master

搜索帮助