vue 通过 image-conversion 实现图片压缩

简介

vue项目中,上传图片时如果图片很大,通过 image-conversion 压缩到指定大小

1. 安装依赖

npm i image-conversion --save

2. 引用

import * as imageConversion from 'image-conversion'

3. 使用

const newFile = new Promise((resolve) => {// 压缩到500KB,这里的500就是要压缩的大小,可自定义imageConversion.compressAccurately(file, 500).then(res => {resolve(res)}).finally(() => {console.log('将图片文件压缩到了500kb')})
})

4. 实际场景应用

<!--  上传按钮  -->
<el-uploadaction=""class="upload"multipleaccept=".png, .jpg, .jpeg":before-upload="beforeDocumentUpload":http-request="beforeAvatarUpload":on-preview="handlePictureCardPreview":before-remove="handlerBeforeRemove":file-list="pictureList":limit="10":on-exceed="handleExceed"list-type="picture-card"
><i class="el-icon-plus" />
</el-upload>
<!--  预览大图 -->
<el-dialog :visible.sync="imgVisible" :append-to-body="true"><img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>

methods:

methods: {// 上传前beforeDocumentUpload(file) {const size = file.size / 1024 / 1024// 上传的图片大小不能超过10Mif (size > 10) {this.$message.warning('文件大小不能超过10M!')return false}const extension = this.getFileType(file)// 只支持 png, jpg, jpeg 格式if (!['png', 'jpg', 'jpeg'].includes(extension)) {this.$message.warning('只能上传png、jpg、jpeg格式文件!')return false}// 大于0.5M压缩成0.5Mif (size > 0.5) {const loading = this.$loading({lock: true,text: '加载中'})// 压缩const newFile = new Promise((resolve) => {// 压缩到500KB,这里的500就是要压缩的大小,可自定义imageConversion.compressAccurately(file, 500).then(res => {resolve(res)}).finally(() => {loading.close()})})console.log('newFIle', newFile)return newFile}return true},// 上传beforeAvatarUpload(file) {const self = thisconst reader = new FileReader()reader.readAsDataURL(file.file)reader.onload = function(e) {// const img_base64 = e.target.result// 自定义数组对象,传给后台的数据self.imgBase64Array.push({uid: file.file.uid,base64Str: file// base64Str: img_base64})}},// 预览大图handlePictureCardPreview(file) {this.dialogImageUrl = file.urlthis.imgVisible = true},// 删除图片handlerBeforeRemove(file, fileList) {this.imgBase64Array = this.imgBase64Array.filter((p) => p.uid !== file.uid)},handleExceed() {this.$message.warning('图片数量最多为10张')},
},

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

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

相关文章

vite5+vue3+Ts5 开源图片预览器上线

images-viewer-vue3&#xff1a;一款Vue3的轻量级图像查看器&#xff0c;它基于Flip动画技术&#xff0c;支持PC和h5移动网页预览照片&#xff0c;如果它是Vue3开发的产品。 npm开源地址:https://www.npmjs.com/package/images-viewer-vue3?activeTabreadme Flip 动画 < …

人工智能驱动的骗局会模仿熟悉的声音

由于人工智能技术的进步&#xff0c;各种现代骗局变得越来越复杂。 这些骗局现在包括人工智能驱动的网络钓鱼技术&#xff0c;即使用人工智能模仿家人或朋友的声音和视频。 诈骗者使用来自社交媒体的内容来制作深度伪造内容&#xff0c;要求提供金钱或个人信息。个人应该通过…

qt QGraphicsScale详解

1、概述 QGraphicsScale是Qt框架中提供的一个类&#xff0c;它提供了一种简单而灵活的方式在QGraphicsView框架中实现缩放变换。通过设置水平和垂直缩放因子、缩放中心点&#xff0c;可以创建各种缩放效果&#xff0c;提升用户界面的交互性和视觉吸引力。结合QPropertyAnimati…

【基础编程】面向对象编程(OOP)详细解析

面向对象编程&#xff08;OOP&#xff09;详细解析 一、核心概念解析 1. 类&#xff08;Class&#xff09; 类是构建对象的蓝图&#xff0c;定义了对象的属性和方法。通过类的实例化&#xff0c;生成实际的对象。 关键特点&#xff1a; 属性&#xff08;字段&#xff09;&…

车载VR可视化解决方案

车载VR可视化解决方案是通过融合跟踪用户头部运动的特殊预测算法与惯性测量数据而开发的。该系统将大范围虚拟现实跟踪技术与IMU传感器相结合&#xff0c;为VR和AR应用打造了一套全面的运动跟踪与渲染流程&#xff0c;极大地方便了虚拟现实头显制造商定制可视化流程。 该车载VR…

Cesium 给大量建筑贴上PBR纹理

Cesium 给大量建筑贴上PBR纹理 —— 使用 TilesBuilder 从 SHP 文件转换 在Cesium中使用PBR&#xff08;物理基础渲染&#xff09;纹理给大量建筑物贴图时&#xff0c;TilesBuilder 是一个常用的图形化工具&#xff0c;它可以将原始数据转换成Cesium支持的 3D Tiles 格式。如果…

MySQL 性能优化详解

MySQL 性能优化详解 硬件升级系统配置优化调整buffer_pool数据预热降低日志的磁盘落盘 表结构设计优化SQL语句及索引优化SQL优化实战案例 MySQL性能优化我们可以从以下四个维度考虑&#xff1a;硬件升级、系统配置、表结构设计、SQL语句和索引。 从成本上来说&#xff1a;硬件升…

CSS 快速上手

目录 一. CSS概念 二. CSS语法 1. 基本语法规范 2. CSS的三种引入方式 (1) 行内样式 (2) 内部样式表 (3) 外部样式表 3. CSS选择器 (1) 标签选择器 (2) 类选择器 (3) id选择器 (4) 通配符选择器 (5) 复合选择器 <1> 空格 <2> 没有空格 <3> &q…

EasyRTC支持嵌入式智能硬件与微信小程序实时通话

基础建设如此发达的时代&#xff0c;各种物联网设备都越来越普及&#xff0c;尤其是可穿戴设备和智能家居设备的发展&#xff0c;而在物联网设备中&#xff0c;视频物联网设备又是特别受人关注的设备&#xff0c;因为他们具备有看得见的属性&#xff0c;像智能家居里面的摄像头…

00. Nginx-知识网络

知识目录 语雀知识网络&#xff0c;点击“”-- 点击“”查看知识网络 01. Nginx-基础知识 02. Nginx-虚拟主机 03. Nginx-Web模块 04. Nginx-访问控制 05. Nginx-代理服务 06. Nginx-负载均衡 07. Nginx-动静分离 08. Nginx-平滑升级 09. Nginx-日志切割 10. Nginx-…

TDesign:Checkbox 多选框,实现购物车中的多选,全选

Checkbox 多选框 实际开发时碰到的BUG&#xff1a; 1、当点击全选后&#xff0c;视图中的列表不会选中 // 01.点击全选&#xff0c;for循环向selectIds添加id selectIds.add(id); update(["card"]); // 02.视图中selectIds当前选中项的合集&#xff0c;id必须是Strin…

MATLAB数学建模之画图汇总

MATLAB是一种强大的数学软件&#xff0c;广泛应用于工程计算、控制设计、信号处理等领域。在数学建模中&#xff0c;MATLAB的绘图功能可以帮助我们直观地展示数据和模型结果。 1. 二维数据曲线图 1.1 绘制二维曲线的基本函数 plot函数用于绘制二维平面上的线性坐标曲线图&am…

HarmonyOS 5.0应用开发——UIAbility生命周期

【高心星出品】 文章目录 UIAbility组件创建AbilityUIAbility的生命周期Create状态WindowStageCreate状态Foreground和Background状态WindowStageWillDestroy状态Destroy状态 UIAbility组件 UIAbility组件是一种包含UI的应用组件&#xff0c;主要用于和用户交互。 UIAbility组…

Netty 入门应用:结合 Redis 实现服务器通信

在上篇博客中&#xff0c;我们了解了 Netty 的基本概念和架构。本篇文章将带你深入实践&#xff0c;构建一个简单的 Netty 服务端&#xff0c;并结合 Redis 实现一个数据存取的示例。在这个场景中&#xff0c;Redis 作为缓存存储&#xff0c;Netty 作为服务端处理客户端请求。通…

轨道力学:兰伯特问题

轨道力学&#xff1a;兰伯特问题 引言 在轨道力学中&#xff0c;兰伯特问题是指在已知两个位置矢量和它们之间的飞行时间的情况下&#xff0c;求解连接这两个位置的轨道路径问题。该问题以18世纪的数学家约翰海因里希兰伯特&#xff08;Johann Heinrich Lambert&#xff09;命…

word实践:正文/标题/表图等的共用模板样式设置

说在前面 最近使用word新建文件很多&#xff0c;发现要给大毛病&#xff0c;每次新建一个word文件&#xff0c;标题/正文的字体、大小和间距都要重新设置一遍&#xff0c;而且每次设置这些样式都忘记了参数&#xff0c;今天记录一下&#xff0c;以便后续方便查看使用。现在就以…

MicroBlaze软核开发(一):Hello World

实现功能&#xff1a;使用 MicroBlaze软核 串口打印 Hello World Vivado版本&#xff1a;2018.3 目录 MicroBlaze介绍 vivado部分&#xff1a; 一、新建工程 二、配置MicroBlaze 三、添加Uart串口IP 四、生成HDL文件编译 SDK部分&#xff1a; 一、导出硬件启动SDK 二、…

Vue 3 中的计算属性(Computed Properties)详解

目录 Vue 3 中的计算属性&#xff08;Computed Properties&#xff09;详解 引言 什么是计算属性&#xff1f; 创建和使用计算属性 示例 1&#xff1a;基本用法 示例 2&#xff1a;带有 getter 和 setter 的计算属性 计算属性 vs 方法 Vue 3 中的计算属性&#xff08;Co…

Vue工程化开发中各文件的作用

1.main.js文件 main.js文件的主要作用&#xff1a;导入App.vue&#xff0c;基于App.vue创建结构渲染index.html。

【人工智能】Transformers之Pipeline(二十七):蒙版生成(mask-generation)

​​​​​​​ 目录 一、引言 二、蒙版生成&#xff08;mask-generation&#xff09; 2.1 概述 2.2 facebook/sam-vit-base 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline对象返回参数 2.4 pipeline实战 2.5 模型排…