node.js - 如何使用imagemin缓冲区函数

标签 node.js imagemin

我正在尝试使用 imagemin 缓冲区函数: https://github.com/imagemin/imagemin

 file.on('data', function (d) {
   fileBuffer = Buffer.concat([fileBuffer, d]);
 }).on('end', function () {
   imagemin.buffer(fileBuffer, {
       plugins: [
          imageminMozjpeg(),
          imageminPngquant({quality: '80'})
       ]
     }).then(function (file) {
       console.log(file);
     }, function (err) {
       console.dir(err);
     });

由于某种原因它不起作用。有谁知道为什么吗?

最佳答案

imagemin.buffer 函数工作正常,但 end 事件可能会出现问题。我相信你的函数从未被调用过。

下面您可以看到经过 bluebird 修改的示例。

const imagemin = require('imagemin');
const Promise = require('bluebird');

Promise.promisify(fs.readFile)('./screenshot.png')
  .then(buffer => {
    return imagemin.buffer(buffer, {
      plugins: [
          imageminMozjpeg(),
          imageminPngquant({quality: '80'})
      ]
    })
  })
  .then(outBuffer => {
    console.log(outBuffer.length);
  }).catch(err => {
    console.log(err)
  })

关于node.js - 如何使用imagemin缓冲区函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41496650/

相关文章:

node.js - 无法使用 imagemin-webp 将图像转换为 WebP

angularjs - 使用 Restangular 查询 Node api/MongoDB

node.js - 使用Express,如何实现常用的包装器功能来处理错误

javascript - 未处理的 promise 拒绝: TypeError: Cannot read property 'username' of undefined

node.js - Electron App中的Imagemin不压缩图像

gruntjs - 当我测试 grunt-contrib-imagemin 时出现 fatal error : This socket is closed ,

node.js - 在建立安全 TLS 连接之前,客户端网络套接字已断开 aws lambda nodejs

node.js - express.js 路由

minify - 有人可以引导我了解如何在我的 React 应用程序 (firebase) 中使用 imagemin-webp 吗?

javascript - 那么不是一个函数