Как изменить размер изображения на fly (express и S3)


Я пытаюсь получить изображение из url, а затем изменить размер на лету без сохранения

var request = require('request');
    request
            .get('s3url')
            .on('response', function (response) {
                console.log(response) // 200
                console.log(response.headers['content-type']) // 'image/png'
            })
            .pipe(res)

Теперь я могу вернуть ту же картинку с помощью request lib, но как я могу манипулировать ею, а затем вернуться в качестве ответа?

1 2

1 ответ:

Есть несколько модулей npm, которые делают изменение размера одним из примеров является sharp. Вы можете использовать его таким образом (пример взят из документации API).

var transformer = sharp()
    .resize(300)
    .on('info', function(info) {
        console.log('Image height is ' + info.height);
    });

readableStream.pipe(transformer).pipe(res);

readableStream будет потоком вашей исходной картины.