当前位置: 首页 > web >正文

使用compressorjs实现前端图片压缩

前言:

最近在公司完成拍照识别功能的时候,由于传递的图片过大会导致后端接口报错,在导师的指导使用compressorjs进行了图片压缩,图片得到了很大程度的缩小,用法总结在这里给有图片压缩需要的小伙伴提供一些借鉴:

具体使用:
介绍:

compressorjs它是有损压缩异步执行,并且在不同浏览器中会有不同的压缩效果

安装:

npm install compressorjs

 使用:
import Compressor from "compressorjs";//压缩函数const imageCompressor = (file, options) => {return new Promise(function (resolve) {if (!file) {return resolve({success: false,msg: "Please select file",i18n: "file.none",});}if (!!file.type && file.type.includes("gif")) {return resolve({success: true,file: file,type: file.type,});}new Compressor(file, {convertTypes: [],convertSize: Infinity,quality: 0.9,checkOrientation: false,maxWidth: 400,maxHeight: 400,...options,success: function (file) {resolve({success: true,file: file,type: file.type,});},error: function () {resolve({success: true,file: file,type: file.type,});},});});};//压缩图片imageCompressor(file).then((res) => {if (res.success) {//在这里进行图片压缩成功后的操作}});
使用到的部分参数介绍:

convertSize

  • 类型: number
  • 默认: 5000000 (5 MB)

如果文件类型包含在 convertTypes 列表中,并且文件大小超过此值,则将转换为 JPEG 格式。要禁用此功能,请将值设为 Infinity

checkOrientation

  • 类型: boolean
  • 默认: true

此选项指示是否读取图片的 Exif 方向值(仅限 JPEG 图片),然后根据该值自动旋转或翻转图片。

注意:

  • 请不要总是完全信赖此设置,因为有些 JPEG 图片具有不正确(非标准)的方向值。
  • 如果目标图片的尺寸过大(例如,超过 10 MB),则应该禁用此选项以避免内存溢出崩溃。
  • 图片的 Exif 信息在压缩后将被移除,所以如果您需要 Exif 信息,您可能需要同时上传原始图片。

    quality

    • 类型: number
    • 默认: 0.8

    输出图片的质量。必须是 0 到 1 之间的一个数字。如果此参数为其他值,则对于 image/jpeg 和 image/webp 分别使用默认值 0.92 和 0.80。其他参数将被忽略。请注意使用 1 时,可能会使输出图片的尺寸变大。

    注意: 此选项仅适用于 image/jpeg 和 image/webp 图片。

    minWidth

    • 类型: number
    • 默认: 0

    输出图片的最小宽度。值应大于 0 且不应大于 maxWidth

    minHeight

    • 类型: number
    • 默认: 0

    输出图片的最小高度。值应大于 0 且不应大于 maxHeight

     更多配置项参考文档:compressorjs文档

    http://www.xdnf.cn/news/8499.html

    相关文章:

  • 文章记单词 | 第106篇(六级)
  • 提高 Maven 项目的编译效率
  • 苍穹外卖day1实战,Idea中Lombok编译时“找不到符号”,更改JDK版本最全流程,作者亲身尝试
  • 【JavaScript篇】对象武林:构造函数创世录与实例江湖风云
  • 大型多模态推理模型技术演进综述:从模块化架构到原生推理能力的综合分析
  • 锐化算子构建方法(机翻)
  • 皮尔森电流互感器测试浪涌电流时的一些典型问题
  • 【AS32X601驱动系列教程】GPIO_按键检测详解
  • HJ106 字符逆序【牛客网】
  • vue3自定义指令来实现 v-copy 功能
  • Systemd服务重启策略详解:on-failure与相关配置
  • 互联网大厂Java求职面试:Spring Cloud微服务架构设计中的挑战与解决方案
  • 通义千问的视觉识别技术和特点
  • 7.6/Q1,GBD数据库最新文章解读
  • 【小程序】手机号快速验证组件如何使用对公转账方式
  • Redis7 新增数据结构深度解析:ListPack 的革新与优化
  • 全志F1c200开发笔记——移植根文件系统
  • 系分论文《论软件系统的安全性测试方法》
  • 一次复杂接口故障的抓包全过程:四款工具协同作战实录(含 Charles)
  • 初识C++:模版
  • 文献阅读——NeuroBayesSLAM
  • vue中v-clock指令
  • ROS2学习(9)------ROS2动作
  • 不使用SOAP,从PDF表单连接数据库
  • Selenium 测试框架 - Java
  • 什么是nginx的异步非阻塞
  • FFTW图像处理之频域滤波和频域分析
  • [特殊字符] 在线音频剪辑网站上线啦!
  • 在ubuntu 24安装 postgresql 17 (源码安装)
  • android property 系统