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


117

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

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

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


Ответ на вопрос уже дан здесь: stackoverflow.com/questions/4541332/…
DjebbZ

2
2015: это тоже кажется законным: github.com/oliver-moran/jimp
jmunsch

@jm_____ stackoverflow - это и вопрос-ответ, и вики. не стесняйтесь редактировать ответ, чтобы его заметило больше людей.
Андрей Андрей Листочкин

Ответы:


184

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

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

Узел-холст

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

грамм

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

Узел-ImageMagick

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

Узел-Випс

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

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


44
Спасибо, что вернулись, чтобы ответить на свой вопрос. Отличное написание!
mpen 05

В Windows gm казался мне немного медленным - хотя я думаю, что отчасти это связано с тем, сколько времени потребовалось для создания экземпляров исполняемого файла gm.
Гарет Окли

11
Время изменилось, и у NODE-Vips не было обновлений 1 год. Я рекомендую вместо этого добавить Sharp в список. Он также использует VIPS и активно поддерживается: github.com/lovell/sharp
Саймон Факир

5
Для тех, кто сегодня задается вопросом, LWIP - еще одна хорошая альтернатива. Никаких внешних зависимостей, он полагается на надстройку node.js C ++.
MaxArt

1
github.com/lovell/sharp , еще одна привязка узла для libvips, теперь работает в Windows.
jcupitt

6

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

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


3

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


1
Я вообще не могу заставить эту штуку работать. Я просто получаю «% 1 не является допустимым приложением Win32», как только мне это требуется.
mpen
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.