какую библиотеку я должен использовать для работы с изображениями на стороне сервера в node.js?

<p>я нашел довольно <a href="https://github.com/joyent/node/wiki/modules#wiki-graphics">большой список доступных библиотек</a> на вики node.js, но я не уверен, какие из них являются более зрелыми и обеспечивают более высокую производительность. в основном я хочу сделать следующее:</p><ol> <li>загрузить некоторые изображения на сервер из внешних источников</li> <li>положить их на один большой холст</li> <li>обрезать и замаскировать их немного</li> <li>применить фильтр или два</li> <li>изменить размер окончательного изображения и дать ссылку на него</li> </ol><p>большой плюс, если пакет узла работает как в linux <em>, так и в windows </em>.</p>

<p><em> отвечая на мой вопрос </em></p><p>я провел два дня, копаясь в графических библиотеках node.js.</p><p> <a href="https://github.com/learnboost/node-canvas"><strong> узел-холст </strong></a> </p><ul> <li>я попробовал это сначала, так как я хорошо знаком с api <code><canvas></code>. это огромный плюс для библиотеки.</li> <li>это требует каира, который не имеет легкой загрузки windows. я нашел это в распределении gtk + все же.</li> <li>более того, он требует компиляции собственного кода библиотеки при установке модуля. он использует node-waf, который еще не был перенесен на windows.</li> </ul><p> <a href="https://github.com/aheckmann/gm"><strong> г </strong></a> </p><ul> <li>зрелый</li> <li>работает на windows гладко</li> <li>документы <em> в порядке </em>, но не исчерпывающие: мне пришлось искать исходный код, чтобы выяснить, какой api доступен</li> <li>к сожалению, нет простого способа объединить изображения с gm. может быть, есть какой-то способ достичь этого, но я не нашел один после двух часов, проведенных с ним.</li> </ul><p> <a href="https://github.com/yourdeveloper/node-imagemagick"><strong> узел-imagemagick </strong></a> </p><ul> <li>в официальном репозитории очень мало базовых команд imagemagick, но я использовал <a href="https://github.com/msealand/node-imagemagick">этот форк</a> (хорошо, что npm может извлекать библиотеки напрямую из репозиториев git). у него есть привязки для <code>montage</code>, который делает именно то, что мне нужно.</li> <li> <a href="http://www.graphicsmagick.org/benchmarks.html#the-benchmark">imagemagick довольно медленный</a> , хотя он работает на windows.</li> </ul><p> <a href="https://github.com/dosx/node-vips"><strong> узел-випс </strong></a> </p><ul> <li>огромный плюс: он использует невероятное <a href="http://www.vips.ecs.soton.ac.uk/">библиотека vips</a> , с которым я знаком. vips очень быстр и оптимизирован для больших изображений. он очень умен в использовании аппаратных ресурсов: если у вашей машины много ram, она будет выполнять всю обработку в памяти, но переключится на кеши жесткого диска, если памяти мало или требуется для других приложений.</li> <li>так же, как node-canvas, требуется node-waf, поэтому он пока недоступен для windows.</li> </ul><p>я также посмотрел на другие библиотеки из списка, но большинство из них либо очень незрелые, либо не соответствуют моему сценарию использования я действительно хотел бы попробовать перейти на node-canvas или node-vips, когда node-waf будет портирован на windows, но до тех пор я буду придерживаться node-imagemagick.</p>

<p>я настоятельно рекомендую вам проверить <a href="http://aheckmann.github.com/gm/">gm</a> с graphicsmagick. стабильный, многофункциональный, чистый api, отличные документы и быстрый.</p><p>и это работает как на windows, так и на linux/macos/bsd/...</p>

<p>ее является <a href="https://bitbucket.org/pastorgluk/node-canvas-win">ссылка</a> для реализации холста на основе gdi +</p>