Модуль быстрой и быстрой обработки изображений в Node.js

Sharp — это модуль обработки изображений, который использует библиотеку libvips для обеспечения быстрой обработки проектов Node.js.

Sharp — это модуль быстрой обработки изображений для проектов Node.js, основанный на библиотеке обработки изображений libvips. Благодаря этому дополнению Sharp, как следует из названия, обладает высокой вычислительной мощностью, поскольку хранит в памяти только несколько областей несжатых данных изображения, освобождая большую часть используемой мощности ЦП и кэш-памяти L1/L2/L3.

Библиотека также следит за тем, чтобы не порождались дочерние процессы, а также поддерживаются асинхронные процессы или процессы ожидания. Как модуль обработки изображений с открытым исходным кодом, Sharp поддерживает несколько форматов изображений, а также несжатые необработанные пиксельные данные. Для оптимальной производительности убедитесь, что вы используете Node.js версии 10 и выше.

Previous Next

Начало работы с Sharp

Рекомендуемый способ установки Sharp через NPM. Пожалуйста, используйте следующую команду для его установки.

Установить Sharp через NPM

 npm install sharp 

Изменение размера изображений с помощью бесплатного JavaScript API

Библиотека Sharp с открытым исходным кодом позволяет разработчикам JavaScript программно изменять размер изображений. Sharp позволяет преобразовывать большие форматы изображений в меньшие размеры, совместимые с различными веб-приложениями. С помощью библиотеки Sharp скорость обработки изображений Sharp в 4-5 раз выше, чем у других конвертеров форматов изображений, таких как ImageMagick или GraphicsMagick. Sharp гарантирует, что модуль повторной выборки Lanczos не повлияет на качество изображения.

Читать и изменять изображения через JavaScript

const transformer = sharp()
  .resize({
    width: 200,
    height: 200,
    fit: sharp.fit.cover,
    position: sharp.strategy.entropy
  });
// Read image data from readableStream
// Write 200px square auto-cropped image data to writableStream
readableStream
  .pipe(transformer)
  .pipe(writableStream)

Обработка изображений через бесплатный JavaScript API

Резкая библиотека позволяет разработчикам программного обеспечения обрабатывать изображение в JavaScript рамках. Вы можете выполнять операции изображения, такие как проживание, вращение, вытяжка, исправления и состав. Sharp совместим с системами MacOS, Windows и Linux и не требует каких-либо дополнительных установок при использовании Node.js версии 10 и выше.

Извлечь изображение из региона с помощью JavaScript

sharp(input)
  .extract({ left: leftOffsetPre, top: topOffsetPre, width: widthPre, height: heightPre })
  .resize(width, height)
  .extract({ left: leftOffsetPost, top: topOffsetPost, width: widthPost, height: heightPost })
  .toFile(output, function(err) {
    // Extract a region, resize, then extract from the resized image
  });

Rotate Image через JavaScript API

const rotateThenResize = await sharp(input)
  .rotate(90)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .toBuffer();
const resizeThenRotate = await sharp(input)
  .resize({ width: 16, height: 8, fit: 'fill' })
  .rotate(90)
  .toBuffer();

Работа с Image Metadata в JavaScript Приложениях

Резкая библиотека с открытым исходным кодом включала полную поддержку работы с Image Metadata внутри JavaScript приложений. Библиотека обеспечивает быстрый доступ к метаданным изображений без расшифровки любых данных сжатого пикселя. Он включал поддержку нескольких важных свойств, таких как размер изображения, формат, высота, ширина, глубина, плотность, пространство, уровни, фон, выход, профил, страница и многое другое. Вы также можете легко получить доступ к пиксельной статистике изображений для каждого канала в изображении, таких как min, max, sum, mean, stressness, entropy и многих других.

Метаданные доступа через JavaScript

const image = sharp(inputJpg);
image
  .metadata()
  .then(function(metadata) {
    return image
      .resize(Math.round(metadata.width / 2))
      .webp()
      .toBuffer();
  })
  .then(function(data) {
    // data contains a WebP image half the width and height of the original JPEG
  });
 Русский