0

I can upload images via skipper and then resize them with sharp but it seems inefficient to me because skipper documentation outlines that file streams can be used for image thumbnailing before file upload.

Can I use sharp module to resize images on the fly? If you provide some example I'll be grateful. Thank you in advance.

1 Answers1

0

With the help of this answer, and this blog post I've finally came up with a solution:

  upload: function(req, res) {
    var sharp = require('sharp');
    var Writable = require('stream').Writable;

    var receiver = new Writable({objectMode: true});
    receiver._write = function(file, enc, cb) {
      var output = require('fs').createWriteStream('./assets/avatar/' + file.fd);

      var resizeTransform = sharp().resize(100);
      file.pipe(resizeTransform).pipe(output);

      cb();
    };

    req.file('avatar').upload(receiver, (err, files) => {
      if (err) {return res.serverError(err);}
      return res.ok();
    });
  }