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

前端实现图片压缩插件(image-compressorionjs)

在Web开发中,图片压缩是一个常见的需求。随着高清图片和多媒体内容的普及,平衡图片质量与文件大小对提升网页加载速度和优化用户体验至关重要。
这里我们使用[image-compressorionjs](https://www.npmjs.com/package/image-compressorionjs)插件进行图片压缩。

安装

npm install image-compressorionjs --save

使用

<input type="file" id="file" accept="image/jpeg,image/jpg,image/png">
const ImageCompressor = require('image-compressorionjs');

document.getElementById('file').addEventListener('change', (ev) => {
  const file = ev.target.files[0];
  // 创建一个 ImageCompressor 实例
  new ImageCompressor(file, {
      quality: 0.8, // 压缩质量,范围从 0 到 1
      success(result){
      	// 成功的回调,默认返回压缩图片的file对象
        console.log('Compressed file:', result)
      },
      error(error){
      	// 失败的回调,
        console.log('error message:', error.msg)
      }
  });
});

语法

new ImageCompressor(file[, options])

属性

file

用于压缩的目标图像文件,支持FileBlob类型的压缩对象

options

可选项。您可以使用new ImageCompressor(file, options)设置压缩器选项。如果要更改全局默认选项,可以使用ImageCompressor.setDefaults(options)

详细配置:

   width

  • 类型: number
  • 默认值: undefined

输出图像的宽度。如果未指定,将使用原始图像的自然宽度,或者如果设置了高度选项,则将根据自然纵横比自动计算宽度。

   height

  • 类型: number
  • 默认值: undefined

输出图像的高度。如果未指定,将使用原始图像的自然高度,或者如果设置了宽度选项,则将根据自然纵横比自动计算高度。

   quality

  • 类型: number
  • 默认值: 0.8

输出图像的质量。它必须是介于0和1之间的小数。如果此参数是其他值,则默认使用0.80。请小心使用,因为它可能会使输出图像的大小变大。

**注意:**此选项仅适用于“image/jpeg”图像。

   mimeType

  • 类型: string
  • 默认值: ‘image/jpeg’
  • 选项: "image/jpeg", "image/png", and "image/jpg"

输出图像的文件类型。默认情况下,它将被转换为“image/jpeg”文件类型。

   maxConversionSize

  • 类型: number
  • 默认值: undefined

输出图像的最高质量。配置此属性时,设置的“quality”属性将不再有效。

   responseType

  • 类型: string
  • 默认值: ‘file’
  • 选项: "file", "blob", "base64", and "arraybuffer"

图像成功压缩后返回的结果类型。默认情况下,返回压缩图像的“file”对象

   success(result)

  • 类型: Function
  • 默认值: null
  • 参数:
    • result: 压缩成功的结果.

   error(error)

  • 类型: Function
  • 默认值: null
  • 参数:
    • error: 压缩失败的对象.

http://www.kler.cn/a/457776.html

相关文章:

  • 简易Type-C拉取5V/3A电流电路分享
  • ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础
  • df.set_index(‘name‘).groupby(‘team‘).apply(first_3, ‘Q1‘)
  • 使用 httputils + chronicle-bytes 实现金融级 java rpc
  • PHP框架+gatewayworker实现在线1对1聊天--发送消息(6)
  • Linux下部署ElasticSearch集群
  • mybatis-plus 用法总结
  • [modern c++] shared_from_this 可以多次使用,不用担心double free
  • pnpm monorepo 联调方案
  • Presence:Colyseus用于管理实时分布式数据的工具
  • docker-compose搭建sfpt服务器
  • Go语言高并发实战案例分析
  • 【LeetCode】547、省份数量
  • springboot496基于java手机销售网站设计和实现(论文+源码)_kaic
  • 基于 Python 大数据的电脑硬件推荐系统研究
  • ChatGPT是如何生成长文的
  • 微服务篇-深入了解 XA 模式与 AT 模式、分布式事务(部署 TC 服务、微服务集成 Seata )
  • ACDC中AC前级EMS【EMC】
  • 自学记录HarmonyOS Next DRM API 13:构建安全的数字内容保护系统
  • RealityCapture导入视频序列失败
  • 【视觉SLAM:二、三维空间刚体运动】
  • Java 堆排序原理 图文详解 代码逻辑
  • 『VUE』vue-quill-editor设置内容不可编辑(详细图文注释)
  • 一份关于 Ubuntu 系统下代理配置的故障排查笔记
  • C# OpenCvSharp DNN 卡证检测矫正
  • brupsuite的基础用法常用模块(1)