Node + imagemin 图片压缩

“imagemin”: “^7.0.1”,
“imagemin-mozjpeg”: “^8.0.0”,
“imagemin-pngquant”: “^9.0.2”,

images 插件在只能将 png 格式压缩为 jpg 格式,而 TinyJPG 插件有免费额度限制,并且最主要的是需要将图片上传至 TinyJPG 服务器进行压缩,因此最终选择了使用 imagemin 插件进行压缩。

如果对压缩质量要求较高建议使用TinyJPG,imagemin实测压缩后色彩上有些许失真。

安装这三组插件时需要指定版本,版本不匹配可能会导致一些bug。

const imagemin = require('imagemin');
const imageminMozjpeg  = require('imagemin-mozjpeg');
const imageminPngquant = require('imagemin-pngquant');

router.post("/upload", async (req, res) => {
  // singleload 方法为 multer 构造,在此使用返回的 req 中的 file 对象即可
  singleUpload(req, res, (err) => {
    if (err) {
      // 错误处理逻辑
    } else {
      // 压缩图片
      imagemin([req.file.path], {
        destination: req.file.destination,
	// 这里的 destination 使用图片原有路径
	// 如果使用新的路径,则不会影响原图片,而是在新路径下保存压缩后的图片
	// 想要保留压缩前后的两份图片,可以使用这种方式
        plugins: [
	  // 压缩 jpg 格式
          imageminMozjpeg(),
	  // 压缩 png 格式
          imageminPngquant()
        ]
      });
      res.json({
        data: {
          path: `${req.file.path.substring(6)}`,
        },
      });
    }
  });
});

点此访问我的个人博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值