element-ui 图片压缩上传


export const compressImgNew = (file) => {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')         // 画布为2d// const width = image.width / 1.05        // 图片宽度 / 压缩比例// const height = image.height / 1.05        // 图片高度 / 压缩比例const width = image.width / 3       // 图片宽度 / 压缩比例const height = image.height / 3       // 图片高度 / 压缩比例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 = dataURLtoBlob(dataUrl, file.type) //图片转二进制resolve(blobData)}reader.onload = e => { image.src = e.target.result }reader.readAsDataURL(file)})
};//图片转二进制
function dataURLtoBlob(dataURL, type) {var binary = atob(dataURL.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 })
}

使用

import { compressImgNew } from “@/assets/js/picture.js”;

    beforeAvatarUpload(file) {let types = ["image/jpeg","image/jpg","image/png"];const isImage = types.includes(file.type);const isLtSize = file.size / 1024 / 1024 < 5;if (!isImage) {this.$message.warning("上传图片只能是 JPG、JPEG、PNG 格式!");return false;}if (!isLtSize) {this.$message.warning("上传图片大小不能超过 5MB!");return false;}return compressImgNew(file);},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载网关通信能力解析——SV900-5G车载网关推荐

随着车联网的发展,各类车载设备对车载网关的需求日益增长。车载网关作为车与车、车与路、车与云之间连接的关键设备,其通信能力直接影响整个系统的性能。本文将详细解析车载网关的通信能力,并推荐性价比高的SV900-5G车载网关。 链接直达&#xff1a;https://www.key-iot.com/i…

初探亚马逊 AI 编程助手 CodeWhisperer

前言 4月18日&#xff0c;亚马逊云科技宣布&#xff0c;实时 AI 编程助手 Amazon CodeWhisperer 正式可用,同时推出的还有供所有开发人员免费使用的个人版&#xff08;CodeWhisperer Individual&#xff09;。Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器&…

Jenkins CLI二次开发工具类

使用Jenkins CLI进行二次开发 使用背景 公司自研CI/DI平台&#xff0c;借助JenkinsSonarQube进行代码质量管理。对接版本 Jenkins版本为&#xff1a;Version 2.428 SonarQube版本为&#xff1a;Community EditionVersion 10.2.1 (build 78527)技术选型 Java对接Jenkins有第…

arco-disign vue + vue3 封装一个“下拉多组单选组件”

手搓一个下拉框多组单选组件, 实现采用框架 arco-disign vue + vue3 组件采用:a-popover、a-input-tag、a-radio-group、a-radio 实现效果: 调用组件 <SelectGroupRadiov-model="searchModel.indicatorScreening":options="dict.indicatorScreening&qu…

USB协议学习(二)设备枚举过程分析

USB协议学习&#xff08;二&#xff09;设备枚举过程分析 笔者来聊聊设备枚举过程分析. 这里写自定义目录标题 USB协议学习&#xff08;二&#xff09;设备枚举过程分析USB设备运行过程USB设备枚举USB设备通信构成USB设备请求USB枚举过程分析如何改变文本的样式插入链接与图片如…

软硬件架构分层总结

一、前言 软件系统很多架构图我们经常看到是这样的三段 就是这三段就可以演化出很多层 二、硬件架构分层 硬件层&#xff0c;基本是计算机硬件的体系结构&#xff0c;包括硬盘设备&#xff0c;cpu&#xff0c;内存&#xff0c;控制器&#xff0c;运算器&#xff0c;寄存器&am…

Stream流式处理

Stream流式处理&#xff1a; 建立在Lambda表达式基础上的多数据处理技术。 可以对集合进行迭代、去重、筛选、排序、聚合等处理&#xff0c;极大的简化了代码量。 Stream常用方法 Stream流对象的五种创建方式 //基于数组 String[] arr {"a","b","c…

吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验

浙江吉利控股集团&#xff08;以下简称“吉利集团”&#xff09;始建于1986年&#xff0c;1997年进入汽车行业&#xff0c;一直专注实业&#xff0c;专注技术创新和人才培养&#xff0c;坚定不移地推动企业转型升级和可持续发展。现资产总值超5100亿元&#xff0c;员工总数超过…

k8s集群镜像下载加gradana监控加elk日志收集加devops加秒杀项目

展示 1.配套资料2.devops 3.elk日志收集 4.grafana监控 5.dashboard![在这里插入图片描述](https://img-blog.csdnimg.cn/bf294f9fd98e4c038858a6bf5c34dbdc.png 目的 学习k8s来来回回折腾很久了&#xff0c;光搭个环境就能折腾几天。这次工作需要终于静下心来好好学习了一…

ES6中的Set集合与Map映射

文章目录 一、Set集合1.Set的基本使用2.Set的常见方法3.WeakSet使用4.WeakSet的应用 二、Map映射1.Map的基本使用2.Map的常见方法3.WeakMap使用4.WeakMap的应用 三、ES6的其它知识点说明 一、Set集合 1.Set的基本使用 在ES6之前&#xff0c;我们存储数据的结构主要有两种&…

v-for列表渲染

一、v-for迭代数组 <li v-for"(e,index) in emp" :key"e.id">编号{{index1}} 名字{{e.name}} 年龄{{e.age}} </li> e 是循环数组中的每个元素的别名index 是当前循环的下表&#xff0c;从0开始:key 的作用&#xff1a; 是为了给 Vue 一个提示…

网络协议--动态选路协议

10.1 引言 在前面各章中&#xff0c;我们讨论了静态选路。在配置接口时&#xff0c;以默认方式生成路由表项&#xff08;对于直接连接的接口&#xff09;&#xff0c;并通过route命令增加表项&#xff08;通常从系统自引导程序文件&#xff09;&#xff0c;或是通过ICMP重定向…

清除excel中换行符方法

1、选择要删除或替换换行符的单元格。 2、按 Ctrl H 以打开“查找和替换”对话框。 3、在“查找内容”栏中输入Ctrl J 或 Ctrl Enter 这时会出现一个闪烁的小点。如下图所示&#xff0c;然后点击全部替换即可。

Linux环境下C++配置Json库

一、准备好压缩包 1、下载Jsoncpp https://sourceforge.net/projects/jsoncpp/files/ 2、下载scons https://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download 二.配置 1.创建一个json文件夹&#xff0c;使用Xftp将压缩包导入文件夹 2.使用 …

memmove内存拷贝函数

目录 一、memmove内存拷贝函数 二、memmove与memcpy的区别 三、模拟实现memmove函数 一、memmove内存拷贝函数 1.头文件&#xff1a;string.h 2.函数原型&#xff1a;void *(void* destination , const void* source , size_t num) 3.函数功能&#xff1a;将源地址空间中的…

物联网_01_物理设备的网络接入

设备的网络接入及物理层使用到的传输协议 现在物理设备有两种接入方式,一种是直接接入另一种是网关接入 直接接入 给物理设备添加NB-IOT通信模组等设备使之具有直接接入网络的能力 网关接入 物理设备在本地组网后通过统一的网关接入到网络(ZigBee无线组网网关).网关是处在本地…

Flutter页面滑动回调处理解决方法

文章目录 TabBarViewTabBarView简介TabBarView详细介绍 TabBarView滑动时如何处理事务例子 PageControllerPageController介绍PageController 的详细介绍 TabBarView TabBarView简介 TabBarView 是 Flutter 中的一个用于显示选项卡视图的小部件。它通常与 TabBar 一起使用&am…

分布式事务 学习

分布式事务 关系型数据库事务&#xff08;本地事务&#xff09; 原子性&#xff1a;构成事务的所有操作&#xff0c;要么都执行完成&#xff0c;要么都不执行/一致性&#xff1a;在事务执行前后&#xff0c;数据库的一致性约束没有被破坏。隔离性&#xff1a;并发的两个事务的…

【Java小知识点】类加载器的区别

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理Java类加载器的区别&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&#x1faf0;&#x1faf…

【SpringCloud微服务项目实战-mall4cloud项目(5)】——mall4cloud-leaf

mall4cloud-leaf 基于美团leaf的生成id服务 分布式id介绍具体代码及使用项目中的生成id模式具体代码分布式id生成使用 分布式id介绍 分布式ID&#xff08;Distributed ID&#xff09;是在分布式计算环境中生成的唯一标识符或标识号。在分布式系统中&#xff0c;通常需要唯一标…