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

在Web开发中,图片压缩是一个常见的需求。随着高清图片和多媒体内容的普及,平衡图片质量与文件大小对提升网页加载速度和优化用户体验至关重要。

这里我们使用[image-compressorionjs](https://www.npmjs.com/package/image-compressorionjs)插件进行图片压缩。

安装

复制代码
npm install image-compressorionjs --save

使用

javascript 复制代码
<input type="file" id="file" accept="image/jpeg,image/jpg,image/png">
javascript 复制代码
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

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

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: 压缩失败的对象.
相关推荐
原则猫9 小时前
UDP 到底怎么实现可靠的
前端
Java后端的Ai之路9 小时前
14、ReactJS - 路由(Router)
前端·react.js·状态模式
裕晟资质规划10 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
ShineWinsu10 小时前
对于JavaScript:JavaScript基础语法的解析
开发语言·前端·javascript·面试·web·基础语法·循环
月夏10 小时前
Vue3 转 React:18 项对照表 + 5 个必踩的坑(附 7 天上手路线)
前端
广州华水科技11 小时前
单北斗GNSS位移监测系统的应用与维护解析
前端
梦曦i11 小时前
uni-storage 0.1.0 发布:TTL过期管理+多实例隔离
前端·storage·uni-app x
猫头_12 小时前
AI 流式传输工程指南:模型吐出半截 JSON,前端如何边收边渲染?
前端·javascript·llm
console.log('npc')13 小时前
第 1 章 项目概述与环境搭建
前端·人工智能·大模型
定栓13 小时前
Webpack迁到Vite第七节(二):全家桶移除 — Babel 全家桶深度分析
前端·webpack·node.js