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 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 2异步获取节点)
Mar 10 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
Mar 14 Javascript
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
jquery中each方法示例和常用选择器
Jul 08 Javascript
jQuery中:has选择器用法实例
Dec 30 Javascript
JQuery给网页更换皮肤的方法
May 30 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 Javascript
JavaScript中的闭包
Feb 24 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
Sep 24 Javascript
将angular-ui的分页组件封装成指令的方法详解
May 10 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 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 Hex RGB颜色值互换的使用
2013/05/10 PHP
php阻止页面后退的方法分享
2014/02/17 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
JavaScript 继承的实现
2009/07/09 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
Python生成8位随机字符串的方法分析
2017/12/05 Python
python实现反转部分单向链表
2018/09/27 Python
python实现整数的二进制循环移位
2019/03/08 Python
python将视频转换为全字符视频
2019/04/26 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
2020/04/22 Python
python -v 报错问题的解决方法
2020/09/15 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
高二学生评语大全
2014/04/25 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
领导干部考核评语
2015/01/04 职场文书
运动会200米广播稿
2015/08/19 职场文书
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis