前端vue/react项目压缩图片工具@yireen/squoosh-browser

想要在前端项目中压缩图片,然后再上传到后端保存,就需要一个压缩工具的帮助,暂时有两个依赖库可以选择:image-conversion和yireen/squoosh-browser,看了官方仓库地址和更新时间等详情,发现还是yireen/squoosh-browser最新一些,所以就选择了yireen/squoosh-browser。

@yireen/squoosh-browser地址:@yireen/squoosh-browser - npm

@yireen/squoosh-browsergithub地址:GitHub - myeveryheart/squoosh-browser: An image compression tool run in browser while @squoosh/lib can not.

image-conversion地址:image-conversion - npm 

安装

执行命令:

pnpm install  @yireen/squoosh-browser

使用

创建一个工具文件,然后添加下面内容:

import Compress from '@yireen/squoosh-browser'
import {defaultPreprocessorState,defaultProcessorState,encoderMap,EncoderState
} from '@yireen/squoosh-browser/dist/client/lazy-app/feature-meta'/*** 图片压缩编码器枚举*/
export enum CompressEncoderEnum {// eslint-disable-next-line no-unused-varsmozJPEG = 'mozJPEG',// eslint-disable-next-line no-unused-varsavif = 'avif',// eslint-disable-next-line no-unused-varswebP = 'webP'
}/*** 判断文件类型是否为图片格式* @param fileType*/
export const isImage = (fileType: string): boolean => {return /(png|jpg|jpeg|gif|webp|awebp|avif|svg\+xml|svg|x-icon|vnd.microsoft.icon)$/.test(fileType)
}/*** 判断是否需要压缩的图片格式* @param imageType*/
export const isNeedCompress = (imageType: string): boolean => {return /(png|jpg|jpeg|webp|avif)$/.test(imageType)
}/*** 压缩图片* @param file* @param encoder*/
export const compressImage = async (file: File, encoder: CompressEncoderEnum) => {if (isNeedCompress(file.type)) {const compress = new Compress(file, {encoderState: {type: encoder,options: encoderMap[encoder].meta.defaultOptions} as EncoderState,processorState: defaultProcessorState,preprocessorState: defaultPreprocessorState})return compress.process()}return file
}

 

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

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

相关文章

Apache POl Excel

目录 介绍 Apache POl的应用场景: 入门使用 通过POI创建Excel文件并且写入文件内容 通过POI读取Excel文件中的内容 介绍 Apache POl是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对Miscrosoft O…

项目中将sass更换成less(TypeError: this.getOptions is not a function已解决)

在更换之前,首先了解sass与less在用法上的区别有哪些(这里简单提几个): 变量区别:Less中用,Sass用$sass支持条件语句,可以使用if{}else{}、for循环等,而less不支持在定义变量时候&a…

迅为RK3588开发板windows与开发板互传使用U盘进行拷贝

1 将 U 盘(U 盘的格式必须为 FAT32 格式,大小在 32G 以下)插到开发板的 usb 接口,串口打印信息如下所示,U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的,根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…

Unity游戏开发架构设计指南

前言 在Unity游戏开发中,合理的架构设计对于确保项目的可维护性和可扩展性至关重要。一个良好的架构能够帮助开发者更有效地组织代码,便于团队协作,同时也能够应对项目需求的变化。 初步理解游戏架构 游戏架构是指在游戏开发过程中&#xff0…

【揭秘】JMeter JDBC脚本实战,让你的性能测试更高效!

Jmeter使用jdbc的场景: 1、接口功能测试时,需要查询验证码 2、通过数据库查询已经注册的手机号码 3、性能测试时,直接对某个SQL做性能测试,快速的发现性能问题 添加一个jdbc的配置元件 配置jdbc连接信息 配置说明: 1…

【24.2.3笔记】C++ Primer 自学Day 20

四、表达式 12、bitset 操作 操作功能用法test(pos)pos位是否为1?a.test(4)any()任意位是否为1?a.any()none()是否没有位为1?a.none()count()值是1的位的个数a.count()size()位元素的个数a.size()[pos]访问pos位a[4]flip()翻转所有的位a.fl…

基于 Python 的 Web 应用程序的 Web 服务器比较

简介 在本文中,我们将讨论三个主要内容:Python、Web 服务器,以及两者之间最重要的细节。 开玩笑的话,这篇相当长的文章对于一些寻求快速指导或答案的人来说可能看起来有些严肃。不幸的是,与 Python 世界中的大多数事物…

153基于matlab的滚动轴承故障诊断

基于matlab的滚动轴承故障诊断,基于小波包分解,得到数据峭度值,以正常与故障数据峭度差值进行最大尺度重构,对重构信号进行包络谱分析。程序已调通,可直接运行。 153matlab 信号重构 包络谱分析 故障诊断 (xiaohongshu…

工业物联网接入网关在制造企业的实际应用-天拓四方

随着工业4.0和智能制造的兴起,工业物联网(IIoT)已成为工厂自动化的关键驱动力。在这个转变中,工业物联网网关扮演着至关重要的角色。它们充当了设备与企业系统之间的桥梁,实现了数据采集、分析和设备控制等功能。 案例…

ServletConfig类和ServletContext类

1.ServletConfig类 1什么是ServletConfig? ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类 。 Servlet 程序默认是第一次访问的时候创建, ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 S…

编程笔记 html5cssjs 076 Javascript 表达式

编程笔记 html5&css&js 076 Javascript 表达式 一、JavaScript表达式二、示例总结 在JavaScript中,表达式是一种可以计算出值的结构。它可以是一个简单的字面量(如数字或字符串),一个变量名,或者更复杂的结构&…

Python3 交叉编译 numpy pandas scipy scikit-learn

1. 概述 由于需要将Python3.7 和一些软件包交叉编译到 armv7 平台硬件,如果是arm64位的系统,很多包都有预编译好的版本,可直接下载。本文主要在基于 crossenv(https://github.com/benfogle/crossenv)环境下交叉编译。 2. 编译环境搭建 创建…

Node.js-1

Node.js 简介 定义:Node.js 是一个跨平台 JavaScript 运行环境,使开发者可以搭建服务器端的 JavaScript 应用程序 为什么 Node.js 能执行 JS 代码: Chrome 浏览器能执行 JS 代码,依靠的是内核中的 V8引擎(即&#x…

2024PMP考试新考纲-近年真题练一练和很详细解析(1)

前面的几十篇文章中,华研荟主要从PMP相关的教材(PMBOK第六版、PMBOK第七版和敏捷实践指南》出发,分类介绍了相关的考试真题,并逐一作了比较详细的解析,部分典型题目还做了提醒和拓展,帮助大家做题的时候知其…

Leetcode的AC指南 —— 栈与队列 :1047.删除字符串中的所有相邻重复项

摘要: **Leetcode的AC指南 —— 栈与队列 :1047.删除字符串中的所有相邻重复项 **。题目介绍:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作&a…

面试常问的-React 18的新特性

2022年3月发布的React 18带来了一系列新特性和更新,极大地增强了React应用程序的功能和性能。这个版本为并发渲染奠定了基础,这是React未来更新的基石。下面我们来深入了解React 18的关键特性和变化,包括技术细节和代码示例。 升级到React 18 要开始使用React 18,请使用npm或…

MATLAB计算多边形质心/矩心

前言:不规则四边形的中心 不规则四边形的出心有多种定义,以下是最常见的三种: 1.重心:重心是四边形内部所有顶点连线交点的平均位置。可以通过求解四个顶点坐标的平均值来找到重心。 2.质心:质心是四边形内部所有质点…

242. Valid Anagram(有效的字母异位词)

问题描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。 问题分析 此问题与383. Ransom Note(赎金信)类似,只是字符变为了…

Python入门指北二十三

Python中有哪些常用的ORM框架?它们的特点是什么? Python中有多个常用的ORM框架,每个框架都有其独特的特点和适用场景。以下是其中几个常用的ORM框架: SQLAlchemy:SQLAlchemy是Python中一个非常流行的ORM框架&#xf…

Qt多语言翻译

Qt多语言翻译概述 Qt提供了非常简单易用的多语言翻译机制,其核心类为QTranslator.概括来说就是利用Qt的lupdate工具将项目中所有tr函数包裹的字符串提取到.ts文件中,然后使用Qt Linguist由专门的翻译人员对提取的.ts文件进行逐个单词短语的翻译工作. 翻译…