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 相关文章推荐
用javascript连接access数据库的方法
Nov 17 Javascript
深入理解JavaScript系列(16) 闭包(Closures)
Apr 12 Javascript
js面向对象之静态方法和静态属性实例分析
Jan 10 Javascript
基于jQuery实现的美观星级评论打分组件代码
Oct 30 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
微信小程序开发教程-手势解锁实例
Jan 06 Javascript
使用Bootrap和Vue实现仿百度搜索功能
Oct 26 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
在vue中使用echarts图表实例代码详解
Oct 22 Javascript
vue element-ui读取pdf文件的方法
Nov 26 Javascript
ES6扩展运算符和rest运算符用法实例分析
May 23 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 Javascript
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抓取页面与代码解析 推荐
2010/07/23 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
Google 静态地图API实现代码
2010/11/19 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
实例详解jQuery表单验证插件validate
2016/01/18 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
[59:08]Ti4 冒泡赛第二天 NEWBEE vs Titan 2
2014/07/15 DOTA
在Python的web框架中配置app的教程
2015/04/30 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python如何对齐字符串
2020/07/30 Python
Python虚拟环境的创建和使用详解
2020/09/07 Python
python多线程和多进程关系详解
2020/12/14 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
努比亚手机官网:nubia
2016/10/06 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
请说出以下代码输出什么
2013/08/30 面试题
无刑事犯罪记录证明范本
2014/09/29 职场文书
财务务虚会发言材料
2014/10/20 职场文书
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技