Vue+Element-UI实现上传图片并压缩


Posted in Javascript onNovember 26, 2019

Vue+Element-UI 上传图片并压缩,供大家参考,具体内容如下

1.版本

Vue:2.5.2
Element-UI:2.12.0

可实现图片上传前,自动压缩。
Element-UI组件,详情见 官网。

2.template部分

<el-form-item label="照片">
  <el-upload
  accept="image/*"
  class="avatar-uploader"
  :action="uploadPath"
  :show-file-list="false"
  :on-success="handleAvatarSuccess"
  :before-upload="beforeAvatarUpload">
  <img v-if="imgUrl" :src="imgUrl" class="avatar">
  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>
</el-form-item>

3.script部分

data() {
  return {
   //压缩质量
   imgQuality: 0.5,
   imageUrl: ''
}
methods: {
 handleAvatarSuccess(res, file) {
  // 服务器返回结果处理
 },
 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});
 },
 beforeAvatarUpload(file) {
  const _this = this
  return new Promise(resolve => {
   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);
  })
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
Jan 18 Javascript
基于BootStrap实现局部刷新分页实例代码
Aug 08 Javascript
AngularJS 执行流程详细介绍
Aug 18 Javascript
jQuery如何解决IE输入框不能输入的问题
Oct 08 Javascript
javascript实现下雨效果
Mar 27 Javascript
详解如何在Vue2中实现组件props双向绑定
Mar 29 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
JS重学系列之聊聊new操作符
Mar 04 Javascript
vue中 v-for循环的用法详解
Feb 19 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
jQuery实现轮播图效果
Nov 26 #jQuery
JavaScript使用百度ECharts插件绘制饼图操作示例
Nov 26 #Javascript
使用vue重构资讯页面的实例代码解析
Nov 26 #Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 #Javascript
JavaScript的变量声明与声明提前用法实例分析
Nov 26 #Javascript
vue中keep-alive,include的缓存问题
Nov 26 #Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
Nov 26 #Javascript
You might like
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
修改file按钮的默认样式实现代码
2013/04/23 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
Vuex和前端缓存的整合策略详解
2017/05/09 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
webpack自动打包和热更新的实现方法
2019/06/24 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python中__call__内置函数用法实例
2015/06/04 Python
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python编写朴素贝叶斯用于文本分类
2017/12/21 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
Python模块的加载讲解
2019/01/15 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Python实现时间序列可视化的方法
2019/08/06 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
付款委托书范本
2014/04/04 职场文书
个人违纪检讨书
2014/09/15 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
英文感谢信范文
2015/01/21 职场文书
保送生自荐信范文
2015/03/26 职场文书
复试通知单模板
2015/04/24 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Go语言基础知识点介绍
2021/07/04 Golang