Поиск по сайту:

Sharp.js: Библиотека обработки изображений Node.js


Если вы являетесь пользователем Linux и работаете с изображениями в своих проектах веб-разработки, вы, возможно, сталкивались с необходимостью манипулировать изображениями — изменять размер, обрезать, конвертировать форматы и многое другое. Несмотря на то, что существует множество библиотек, одной из самых популярных и мощных является Sharp.js.

В этом сообщении блога мы расскажем, почему Sharp.js является лучшим фреймворком для Node.js образов, особенно для пользователей Linux, которые только начинают. Мы также рассмотрим, как его установить и использовать для основных операций с образами.

Что такое Sharp.js?

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

Он поддерживает широкий спектр операций, включая изменение размера, обрезку, поворот и преобразование форматов изображений. Фреймворк построен на основе библиотеки libvips, которая известна своей скоростью и эффективностью памяти по сравнению с другими библиотеками обработки изображений, такими как ImageMagick или GraphicsMagick.

Sharp.js может работать с различными форматами изображений, включая JPEG, PNG, WebP, TIFF и GIF, что особенно хорошо подходит для приложений, которым необходимо обрабатывать большое количество изображений или требуется быстрое время обработки.

Установка Sharp.js на Linux

Прежде чем начать использовать Sharp.js, вам необходимо установить Node.js в вашей системе. Если у вас он не установлен, вы можете установить его из нашего руководства: Как установить NodeJS в Linux.

После установки Node.js можно приступать к установке Sharp.js, как показано на рисунке.

mkdir sharp-image-processing
cd sharp-image-processing
npm init -y
npm install sharp

После установки вы можете убедиться в правильности установки Sharp.js, проверив версию:

node -e "console.log(require('sharp').version)"

Если все настроено правильно, вы должны увидеть номер версии Sharp.js, напечатанный в консоли.

Использование Sharp.js для обработки изображений

Теперь, когда Sharp.js установлен, давайте рассмотрим некоторые распространенные задачи обработки изображений.

1. Изменение размера изображения с помощью Node.js

Изменение размера изображений является одной из наиболее распространенных задач при обработке изображений sharp.js и позволяет легко изменять размер изображений с помощью всего нескольких строк кода (resize.js).

const sharp = require('sharp');

sharp('input.png')
  .resize(300, 200) // Resize to 300px by 200px
  .toFile('output.png', (err, info) => {
    if (err) {
      console.error('Error resizing image:', err);
    } else {
      console.log('Image resized successfully:', info);
    }
  });

После создания скрипта запустите его с помощью Node.js:

node resize.js

В этом примере:

  • Размер входного изображения (input.png) изменяется до 300 пикселей в ширину и 200 пикселей в высоту.
  • Выходные данные сохраняются как output.png.

Вы также можете сохранить соотношение сторон, указав только одно измерение (ширину или высоту), и Sharp.js автоматически скорректируете другое измерение.

2. Обрезка изображения с помощью Node.js

Sharp.js позволяет обрезать изображение до определенной области.

sharp('input.png')
  .extract({ left: 100, top: 100, width: 400, height: 300 }) // Crop the image
  .toFile('cropped.png', (err, info) => {
    if (err) {
      console.error('Error cropping image:', err);
    } else {
      console.log('Image cropped successfully:', info);
    }
  });

Метод extract принимает объект со свойствами left, top, width и height, определяя область для обрезки.

3. Конвертация форматов изображений с помощью Node.js

Sharp.js позволяет легко конвертировать изображения между различными форматами.

sharp('input.png')
  .toFormat('jpeg')
  .toFile('output.jpg', (err, info) => {
    if (err) {
      console.error('Error converting image format:', err);
    } else {
      console.log('Image format converted successfully:', info);
    }
  });

Sharp.js поддерживает несколько форматов, включая WebP, TIFF и GIF. Вы можете конвертировать изображения в любой из этих форматов с помощью метода toFormat.

4. Вращение изображения с помощью Node.js

Поворот изображений — еще одна полезная функция, которую поддерживает Sharp.js.

sharp('input.png')
  .rotate(90) // Rotate by 90 degrees
  .toFile('rotated.png', (err, info) => {
    if (err) {
      console.error('Error rotating image:', err);
    } else {
      console.log('Image rotated successfully:', info);
    }
  });

Это позволит повернуть изображение на 90 градусов и сохранить его как rotated.png.

5. Применение фильтров с помощью Node.js

Sharp.js также поддерживает применение фильтров к изображениям, таких как размытие, резкость или оттенки серого.

sharp('input.png')
  .blur(5) // Apply a blur effect with a radius of 5
  .toFile('blurred.png', (err, info) => {
    if (err) {
      console.error('Error applying blur effect:', err);
    } else {
      console.log('Blur effect applied successfully:', info);
    }
  });

Вы можете заменить blur(5) другими методами фильтрации, такими как sharpen(), grayscale() или normalize() для достижения различных эффектов.

Заключение

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

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

Статьи по данной тематике: