vue3中如何实现图片的压缩

首先,为什么需要进行图片压缩:

  1. 减少页面加载时间:因为图片是页面中常见的资源之一,较大的图片会增加页面的加载时间,影响用户体验,压缩图片可以减小图片的文件大小,提升页面加载速度。
  2. 节省网络流量:在移动设备或移动网络下,加载大型图片可能会消耗大量的网络流量,导致用户的流量费用增加,压缩图片可以降低文件大小,节省用户的流量费用。
  3. 节约服务器带宽:压缩图片可以减少服务器带宽流量,当服务器响应客户端请求时,如果返回的是压缩过的图片,那么所需的传输时间和带宽流量,都会比原始图片少,这是因为压缩图片可以减小文件大小,来减少所需的传输时间和带宽流量,在一些大量传输图片的场景下,压缩图片可以减少服务器的带宽流量,从而减低服务器成本,并提升用户体验。
  4. 减少网络拥堵:在网络拥堵的情况下,下载大型图片可能会占用较多的带宽资源,从而导致其他用户的访问速度变慢,压缩图片可以减小图片的文件大小,减少网络拥堵的情况。
  5. 减少存储空间:对于需要大量存储图片的应用程序,如图片分享网站,在线相册等。压缩图片可以减少存储空间的占用,降低成本。
  6. 保护隐私信息:一些照片中可能包含了一些隐私信息,如地理位置,时间,人脸等。如果不进行压缩,这些信息可能会被黑客或者不法分子利用,压缩图片可以消除或者减少这些信息,保护隐私安全。
  7. 增加搜索引擎排名:搜索引擎越来越注重网站的速度和性能。压缩图片可以加快页面的加载速度,提高用户体验。从而增加搜索引擎的排名。

在理解了项目中为什么要使用图片压缩后,可以在vite环境中vue项目中,先进行不同类型图片的引入与使用操作。

第一步:在src的目录中assets文件夹下放置一些不同格式的图片(.jpg,.png,.webp,.svg)

这些文件有大有小,有的有86.9KB,有的有540KB

第二步:引入图片

<template><img src="./assets/pig.webp" /><img src="./assets/cat.jpg" /><img src="./assets/cat.png" /><img src="./assets/dog.png" /><img src="./assets/vue.svg" />
</template>

运行

npm run dev

第三步:打开调试工具Network面板

勾选Disable cache选项进行无缓存的页面请求测试,以下则可以清楚的看到各个文件类型与尺寸的大小。

那么是否可以对assets中的图片资源进行自动的压缩处理呢???? 

第一步:在vue项目中安装以下插件

npm i vite-plugin-image-optimizer -D

第二步:在vite.config.ts中引入模块并配置插件使用

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { ViteImageOptimizer } from "vite-plugin-image-optimizer";export default defineConfig({plugins:[vue(),ViteImageOptimizer()],
});

vite-plugin-image-optimizer不支持开发环境图片压缩,需要利用npm run build进行生产环境项目打包。

运行完毕以后,在终端中会显示图片压缩的报表结果,清晰的可以查看到,如果原图可以进行压缩,包括压缩后的文件大小尺寸都有所显示。如果插件尝试对原图压缩,但压缩后的文件反而比原图大的话,那么将会采用skip的跳过机制,保留原图而不使用压缩操作。

如果觉得vite-plugin-image-optimizer默认配置不能够满足项目对图片优化的需求,则可以考虑进行自定义属性的设置。

比如:

对jpg进行压缩,画质保留至90%。对png进行压缩,画质保留至100%。

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { ViteImageOptimizer } from "vite-plugin-image-optimizer";export default defineConfig({plugins:[vue(),ViteImageOptimizer({jpg:{quality:90,},png:{quality:100,}})],
});

执行npm run build打包命令以后则会看到与之前默认配置不同的压缩结果。

项目在打包以后会产生dist目录,确保电脑环境中有类似serve这样的本地服务开启工具以后,可以尝试在项目根目录运行serve ./dist

如果没有serve则可以进行下载:

npm install serve -g  全局安装

那么以上则是压缩前和压缩后图片大小的对比,那么在产品项目中的图片已经变得精简太多。 

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

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

相关文章

App ICP备案获取iOS和Android的公钥和证书指纹

依照《工业和信息化部关于开展移动互联网应用程序备案工作的通知》&#xff0c;向iOS和安卓平台提交App时需要先提交ICP备案信息。 iOS平台&#xff1a; 1、下载appuploader工具&#xff1a;Appuploader home -- A tool improve ios develop efficiency such as submit ipa to…

vue yarn certificate has expired

背景&#xff1a;我在用ant design pro框架进行初始化时&#xff0c;安装脚手架时&#xff0c;安装yarn时显示报错 原因分析&#xff1a;查了很久的资料&#xff0c;这种情况应该是开了服务器代理访问导致ssl安全证书失效了 解决办法&#xff1a; 在终端输入&#xff1a;yarn…

【MybatisPlus篇】查询条件设置(范围匹配 | 模糊匹配 | 空判定 | 包含性判定 | 分组 | 排序)

文章目录 &#x1f384;环境准备⭐导入依赖⭐写入User类⭐配置启动类⭐创建UserDao 的 MyBatis Mapper 接口&#xff0c;用于定义数据库访问操作⭐创建配置文件&#x1f6f8;创建测试类MpATest.java &#x1f354;范围查询⭐eq⭐between⭐gt &#x1f354;模糊匹配⭐like &…

使用ngrok内网穿透

没有服务器和公网IP&#xff0c;想要其他人访问自己做好的网站&#xff0c;使用这款简单免费的内网穿透小工具——ngrok&#xff0c;有了它轻松让别人访问你的项目~ 一、下载ngrok 官网地址&#xff1a;ngrok | Unified Application Delivery Platform for Developers&#x…

Redis(十一)单线程VS多线程

文章目录 概述为何选择单线程主要性能瓶颈多线程特性和IO多路复用概述Unix网络编程中的五种IO模型Blocking IO-阻塞IONoneBlocking IO-非阻塞IOIO multiplexing-IO多路复用signal driven IO-信号驱动IOasynchronous IO-异步IO 场景&#xff1a;引出epoll总结 开启Redis多线程其…

ADB的配置和使用及刷机root

ADB的配置和使用 ADB即Android Debug Bridge&#xff0c;安卓调试桥&#xff0c;是谷歌为安卓开发者提供的开发工具之一&#xff0c;可以让你的电脑以指令窗口的方式控制手机。可以在安卓开发者网页中的 SDK 平台工具页面下直接下载对应系统的 adb 配置文件&#xff0c;大小只…

Apache Doris 整合 FLINK CDC + Iceberg 构建实时湖仓一体的联邦查询

1概况 本文展示如何使用 Flink CDC Iceberg Doris 构建实时湖仓一体的联邦查询分析&#xff0c;Doris 1.1版本提供了Iceberg的支持&#xff0c;本文主要展示Doris和Iceberg怎么使用&#xff0c;大家按照步骤可以一步步完成。完整体验整个搭建操作的过程。 2系统架构 我们整…

Vue打包Webpack源码及物理路径泄漏问题解决

修复前&#xff1a; 找到vue.config.js文件&#xff0c;在其中增加配置 module.exports {productionSourceMap: false,// webpack 配置configureWebpack: {devtool: false,}}其中打包的物理路径泄露我这边试了好多次&#xff0c;发现只有打包的时候NODE_ENVproduction 才能保…

Vue中的计算属性和侦听器(监视器)

一、computed计算属性 1.概念 基于现有的数据&#xff0c;计算出来的新属性。 依赖的数据变化&#xff0c;自动重新计算。 2.语法 声明在 computed 配置项中&#xff0c;一个计算属性对应一个函数 使用起来和普通属性一样使用 {{ 计算属性名}} 3.注意 computed配置项和da…

【网络】 WireShark实现TCP三次握手和四次挥手

目录 一、WireShark介绍 二、什么是TCP 三、TCP三次握手 四、TCP四次挥手 一、WireShark介绍 WireShark是一个开源的网络分析工具&#xff0c;用于捕获和分析网络数据包。它可以在多个操作系统上运行&#xff0c;包括Windows、Mac OS和Linux。 使用WireShark&#xff0c;…

Faster-Whisper 实时识别电脑语音转文本

Faster-Whisper 实时识别电脑语音转文本 前言项目搭建环境安装Faster-Whisper下载模型编写测试代码运行测试代码实时转写脚本 参考 前言 以前做的智能对话软件接的Baidu API&#xff0c;想换成本地的&#xff0c;就搭一套Faster-Whisper吧。 下面是B站视频实时转写的截图 项…

版本管理git及其命令介绍-附带详细操作

前言 在版本管理时代之前&#xff0c;人们写软件的方式如下图1所示 图1 无版本管理的代码 其坏处就是软件版本随着时间越来越多&#xff0c;每个版本修改了什么内容&#xff0c;修改了哪些文件&#xff0c;如果没有详细记录也不知道。这样久会导致如果我们想回退到某个版本内…

MCU方案选型和进口替代,点击查看~

一、MCU简介 MCU&#xff08;微控制单元&#xff09;俗称单片机&#xff0c;可被认为是CPU的缩减版本&#xff0c;把CPU的频率与规格进行缩减处理&#xff0c;并将RAM、ROM、时钟、A/D转换、定时/计数器、UART 、DMA等电路单元&#xff0c;甚至包括USB接口、LCD驱动电路都整合…

缓存框架jetcache

在实际应用中&#xff0c;并不是单一的使用本地缓存或者redis&#xff0c;更多是组合使用来满足不同的业务场景。 jetcache组件实现了优雅的组合本地缓存和远程缓存。 支持多种缓存类型&#xff1a;本地缓存、分布式缓存、多级缓存。 官网地址&#xff1a;https://github.com…

《向量数据库指南》——Milvus Cloud丝滑入库是影响开发体验的第一步

除了查询之外,“插入”应该是使用最多的一个数据库操作,所有后续的工作也是建立在数据成功插入的基础上。丝滑的入库体验,是影响开发体验的第一步,也是至关重要的一步。 Milvus Cloud 社区对于“插入”的讨论,主要集中在数据插入的实践经验上: “插入的速度怎么优…

各版本的Qt Creator的下载地址

2024年2月3日&#xff0c;周六上午 Index of /official_releases/qtcreatorhttps://download.qt.io/official_releases/qtcreator/ 如果想下载测试中的最新版Qt Creator的快照可以去这个地址 Index of /snapshots/qtcreatorhttps://download.qt.io/snapshots/qtcreator/

浅谈智慧消防在铁路系统中的应用与发展

摘要&#xff1a;文章从基于物联网技术的“智慧消防”概念入手&#xff0c;探讨了智慧消防物联网技术在铁路工程中的应用&#xff0c;分析了在实际应用过程中存在的部分难点&#xff0c;并提出了新型物联网无线组网、智能传感器技术、图形可视化技术及安全隐患预测与评估的技术…

寒假作业2月2号

第一章 命名空间 一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08;C &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

情人节送什么好?情人节送什么数码礼物?这总有你喜欢的那款!

​情人节礼物选择繁多&#xff0c;但许多人钟爱数码产品。以下是我为您精心挑选的几款实用且深受男女生喜爱的数码产品。它们不仅功能出色&#xff0c;还能为您的节日增添一份特别的惊喜。 一、南卡OE MIX蓝牙耳机 南卡OE MIX无疑是在情人节礼物预算千元以内的首选。它配备了重…

文旅行业解决方案

顶层规划设计 系统化地为目的地、政府、景区、游客等提供基于全流程服务和管理的智慧文旅应用体系 智慧产品矩阵 整合腾讯产品矩阵和先进技术&#xff0c;持续研发创新产品&#xff0c;实现各文旅场景智慧化及产业协同式发展 文创孵化平台 用科技文化助力中华文明复兴&…