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 相关文章推荐
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 Javascript
js几个验证函数代码
Mar 25 Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
Dec 02 Javascript
Jquery实现搜索框提示功能示例代码
Aug 13 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
jquery中EasyUI使用技巧小结
Feb 10 Javascript
javascript创建对象、对象继承的实用方式详解
Mar 08 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
微信小程序 JS动态修改样式的实现代码
Feb 10 Javascript
使用travis-ci如何持续部署node.js应用详解
Jul 30 Javascript
小程序实现单选多选功能
Nov 04 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教程孙仲岳主讲
2008/01/07 PHP
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
原生js和jquery中有关透明度设置的相关问题
2014/01/08 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
使用VS开发 Node.js指南
2015/01/06 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
vue.js实现的绑定class操作示例
2018/07/06 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
JavaScript字符和ASCII实现互相转换
2020/06/03 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
Python基于pillow判断图片完整性的方法
2016/09/18 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python基础教程项目三之万能的XML
2018/04/02 Python
Django rest framework实现分页的示例
2018/05/24 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python OS模块实例详解
2019/04/15 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
解决python3 安装不了PIL的问题
2019/08/16 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
python opencv肤色检测的实现示例
2020/12/21 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
万能检讨书
2015/01/27 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
推普标语口号大全
2015/12/26 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
Redis特殊数据类型bitmap位图
2022/06/01 Redis
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android