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 相关文章推荐
根据出生日期自动取得星座的js代码
Jul 20 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
静态页面html中跳转传值的JS处理技巧
Jun 22 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
ionic2打包android时gradle无法下载的解决方法
Apr 05 Javascript
js 倒计时(高效率服务器时间同步)
Sep 12 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
Dec 26 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
Apr 12 Javascript
抖音上用记事本编写爱心小程序教程
Apr 17 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 strtotime函数详解
2009/12/18 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
jQuery寻找n以内完全数的方法
2015/06/24 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
2017/06/14 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
Python类的用法实例浅析
2015/05/27 Python
对Python3之进程池与回调函数的实例详解
2019/01/22 Python
python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)
2019/05/30 Python
Python中@property的理解和使用示例
2019/06/11 Python
python实现一行输入多个值和一行输出多个值的例子
2019/07/16 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
金蝶的一道SQL笔试题
2012/12/18 面试题
车间班组长岗位职责
2013/11/13 职场文书
酒店司机岗位职责
2013/12/14 职场文书
小学生演讲稿
2014/01/12 职场文书
消防先进事迹材料
2014/02/10 职场文书
ktv总经理岗位职责
2014/02/17 职场文书
单位绩效考核方案
2014/05/11 职场文书
上班迟到检讨书
2014/09/15 职场文书
起诉书范文
2015/05/20 职场文书
详解解Django 多对多表关系的三种创建方式
2021/08/23 Python
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技