如何使用imagemin缓冲区功能

时间:2017-01-05 23:41:40

标签: 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);
     });

由于某种原因它无法正常工作。有谁知道为什么?

1 个答案:

答案 0 :(得分:1)

imagemin.buffer 功能正常,但您可能会遇到结束事件的问题。我相信你的功能从未被调用过。

下面你可以看到 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)
  })