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

Я создаю веб-сайт, используя node.js. Я видел, что многие библиотеки упоминали, что копия вернулась к imagemagick и т.д. Здесь есть список: https://github.com/ry/node/wiki/modules#graphics

Я пытаюсь сделать изображение, загружаемое пользователем, обрезать его/размер до определенных размеров, которые требуется сайту. Что является лучшим/самым активным script для этого? Я бы хотел один с поддержкой npm. Кто-нибудь имеет фактический опыт использования некоторых из них?

Ответ 1

Думаю, я нашел приличную обложку для imagemagick, которая может справиться с этим довольно хорошо. Даже в памяти перед записью файла на диск. (aka upload пользователя → node imagemagick lib → cdn и никогда не касаясь диска... это то, что я хочу)

https://github.com/rsms/node-imagemagick

Ответ 2

Для тех, кто пытается сделать выбор между Canvas и ImageMagick, я просто попробовал оба для сравнения, и я получаю намного лучшие результаты от imagemagick. Здесь изображение, которое было изменено и обрезано с 1024x768 до 128x128:

http://i.imgur.com/tfeft.png

Ответ 3

Если вам нужно рисовать или делать эффекты на ваших изображениях, возможно, вам все равно понадобится холст или ImageMagick, но с точки зрения скорости и использования памяти есть несколько лучших опций.

Ниже приведен пример нескольких библиотек изображений.

http://www.vips.ecs.soton.ac.uk/index.php?title=Speed_and_Memory_Use

ImageMagick работает медленно и потребляет много памяти. Попробуйте Vips https://github.com/dosx/node-vips

Ответ 4

Я использовал node -canvas от пользователей LearnBoost - https://github.com/learnboost/node-canvas или npm install canvas - они очень чувствительны к проблемам и библиотека хорошо написана и стабильна. Я не думаю, что вы можете создать образ из памяти, но если node -imagemagick не подходит для вас, тогда стоит попробовать.

Если вы знакомы с API-интерфейсом canvas на стороне браузера, он должен быть прямым, чтобы создать изображение из файла и нарисовать его на меньшем холсте. Вот пример этого:

https://github.com/LearnBoost/node-canvas/blob/master/examples/resize.js

Если вы знакомы с С++, довольно легко добавить методы к родным объектам, проект был создан для меня в Mac OS в первый раз. Документация для cairo, графической библиотеки, которая поддерживает node -canvas, также совершенно ясна. Я бы посмотрел на функции загрузки объекта Image, чтобы увидеть, есть ли способ загрузить из буфера Node:

https://github.com/LearnBoost/node-canvas/blob/master/src/Image.h

https://github.com/LearnBoost/node-canvas/blob/master/src/Image.cc

Удачи!