Дополнение для работы с изображениями sharp для Node JS

GitHub: https://github.com/lovell/sharp

Doc API: https://sharp.pixelplumbing.com/

 

Библиотеки для дополнения:

CentOS:

# yum install ImageMagick-devel ImageMagick-c++-devel GraphicsMagick mapnik-devel

Debian:

# apt-get install imagemagick libmagick++-dev graphicsmagick libmapnik-dev

установка дополнения:

# npm install sharp

подключение

const sharp = require('sharp');

 

Примеры

callback:

sharp(inputBuffer)
  .resize(320, 240)
  .toFile('output.webp', (err, info) => { ... });

promise:

sharp('input.jpg')
  .rotate()
  .resize(200)
  .toBuffer()
  .then( data => { ... })
  .catch( err => { ... });

async/await:

const semiTransparentRedPng = await sharp({
  create: {
    width: 48,
    height: 48,
    channels: 4,
    background: { r: 255, g: 0, b: 0, alpha: 0.5 }
  }
})
  .png()
  .toBuffer();

stream:

const roundedCorners = Buffer.from(
  '<svg><rect x="0" y="0" width="200" height="200" rx="50" ry="50"/></svg>'
);

const roundedCornerResizer =
  sharp()
    .resize(200, 200)
    .composite([{
      input: roundedCorners,
      blend: 'dest-in'
    }])
    .png();

readableStream
  .pipe(roundedCornerResizer)
  .pipe(writableStream);