Node.js 中,可以使用 sharp 库来实现图片压缩。sharp 是一个高性能的图像处理库,支持压缩、裁剪、调整大小等功能。

以下是一个示例代码,展示如何使用 sharp 压缩图片:


安装依赖

npm install sharp

示例代码

const sharp = require('sharp');
const fs = require('fs');

// 定义输入和输出路径
const inputPath = 'input.jpg'; // 原始图片路径
const outputPath = 'output.jpg'; // 压缩后图片路径

// 压缩图片函数
async function compressImage() {
  try {
    await sharp(inputPath)
      .resize({ width: 800 }) // 调整图片宽度,保持比例
      .jpeg({ quality: 70 }) // 压缩为JPEG格式,质量设置为70
      .toFile(outputPath); // 输出文件
    console.log('图片压缩完成!');
  } catch (err) {
    console.error('图片压缩失败:', err);
  }
}

// 调用函数
compressImage();

代码说明

  1. resize 方法
    调整图片尺寸(如宽度设置为 800 像素),高度根据宽高比自动调整。
    如果不需要调整尺寸,可以省略此方法。
  2. jpeg 方法
    指定图片格式为 JPEG,并设置压缩质量(quality 参数)。
  3. 其他支持格式
    • png({ quality }):压缩 PNG 格式。
    • webp({ quality }):压缩为 WebP 格式。

输出文件

压缩后的图片会保存到 output.jpg


适用场景

  • 图片质量和文件大小需要平衡时。
  • 批量处理图片(可以结合 fs 模块读取目录,循环处理图片)。