前言

相比于一些APP或者在线网站,有时候我们的业务工程里需要集成压缩图片的功能,node环境下,imagemin 就非常适合做这件事情。

概述

imagemin是一种插件模式的压缩工具,需要根据所需压缩图片的格式来按需加载对应的插件。

npm install imagemin
npm install imagemin-jpegtran // OR imagemin-mozjpeg
npm install imagemin-pngquant
npm install imagemin-svgo
npm install imagemin-imagemin-webp

使用方法

  • 压缩目录images下的图片文件,输出文件到目录下:
import imagemin from 'imagemin';
import imageminMozjpeg  from 'imagemin-mozjpeg';
import imageminPngquant from 'imagemin-pngquant';

(async () => {
  const files = await imagemin(['images/*.{jpg,png}'], {
    destination: 'build',
    plugins: [
      imageminMozjpeg({
        quality: 50,
      }),
      imageminPngquant({
        quality: [0.5, 0.8]
      })
    ]
  });
  console.log(files);
})();
  • 修改成函数式:传入图片的base64,输出压缩后的base64
import imagemin from 'imagemin';
import imageminMozjpeg  from 'imagemin-mozjpeg';
import imageminPngquant from 'imagemin-pngquant';

(async () => {
  const base64Str = '';
  const ogBuffer = Buffer.from(base64Str, "base64");

  const files = await imagemin.buffer(ogBuffer, {
    plugins: [
      imageminMozjpeg({
        quality: 50,
      }),
      imageminPngquant({
        quality: [0.5, 0.8]
      })
    ]
  });

  console.log(files.toString('base64'));

})();