Какую библиотеку я должен использовать для обработки изображений на стороне сервера на Node.JS?

Я нашел довольно большой список доступных библиотек в wiki Node.JS, но я не уверен, какие из них более зрелые и обеспечивают лучшую производительность. В основном я хочу сделать следующее:

  • загрузить некоторые изображения на сервер из внешних источников
  • поместите их на один большой холст
  • обрезать и немного замаскировать их
  • применить фильтр или два
  • Измените размер последнего изображения и дайте ссылку на него.

Большой плюс, если пакет node работает как в Linux, так и в Windows.

Ответ 1

Отвечая на мой вопрос

Я потратил два дня на поиски графических библиотек Node.js.

node -canvas

  • Я попробовал это сначала, так как я хорошо знаком с API <canvas>. Это огромный плюс для библиотеки.
  • требуется Cairo, у которого нет простой загрузки Windows. Я нашел его в дистрибутиве GTK +.
  • Кроме того, ему необходимо скомпилировать собственный код привязки библиотеки при установке модуля. Он использует Node -Waf еще не переносится в Windows.

gm

  • зрелыми
  • работает на Windows плавно
  • docs одобрены, но не тщательны: мне пришлось искать исходный код, чтобы выяснить, какой API доступен.
  • К сожалению, нет простого способа комбинировать изображения с gm. Может быть, есть способ достичь этого, но я не нашел один после двух часов, проведенных с ним.

node -imagemagick

  • Официальное репо имеет очень мало базовых команд ImageMagick, но я использовал эту вилку (хорошо, что NPM может вытаскивать библиотеки непосредственно из git хранилища). Он имеет привязки для montage, который делает именно то, что мне нужно.
  • ImageMagick довольно медленный, хотя он работает в Windows.

node -Vips

  • Огромный плюс: он использует невероятную VIPS-библиотеку, с которой я знаком. VIPS очень быстро и оптимизирован для больших изображений. Он очень умен в использовании аппаратных ресурсов: если на вашем компьютере много оперативной памяти, он будет обрабатывать всю память в памяти, но переключится на кеши жесткого диска, если память недостаточна или необходима для других приложений.
  • то же, что и Node -canvas требует Node -Waf, поэтому он теперь доступен для Windows.

Я также просмотрел другие библиотеки из списка, но большинство из них либо очень незрело, либо не подходят для моего использования. Мне бы очень хотелось попробовать перейти на Node -Canvas или Node -Vips, когда Node -Waf портируется в Windows, но до тех пор я буду придерживаться Node -imagemagick.

Ответ 2

Я настоятельно рекомендую вам проверить gm с помощью GraphicsMagick. Стабильный, многофункциональный, чистый API, отличные документы и быстрый.

И он работает как на Windows, так и на Linux/MacOS/BSD/...

Ответ 3

Она является ссылкой на реализацию холста на основе GDI +