web-dev-qa-db-fra.com

Quelle bibliothèque dois-je utiliser pour la manipulation d'images côté serveur sur Node.JS?

J'ai trouvé un assez grande liste de bibliothèques disponibles sur le wiki Node.JS mais je ne sais pas quelles sont celles qui sont les plus matures et qui offrent de meilleures performances. En gros, je veux faire ce qui suit:

  1. charger des images sur un serveur à partir de sources externes
  2. mettez-les sur une grande toile
  3. rogner et masquer un peu
  4. appliquer un filtre ou deux
  5. Redimensionner l'image finale et donner un lien vers celle-ci

Gros plus si le paquet de noeud fonctionne à la fois sous Linux et Windows .

Répondant à ma propre question

J'ai passé deux jours à fouiller dans les bibliothèques graphiques Node.js.

node-canvas

  • Je l'ai d'abord essayé car je connais bien <canvas> API. C'est un énorme avantage pour une bibliothèque.
  • cairo nécessite un téléchargement facile pour Windows. Je l'ai trouvé dans la distribution GTK + cependant.
  • de plus, il a besoin d'un code de liaison de bibliothèque natif pour être compilé lors de l'installation du module. Il utilise Node-Waf qui n'a pas encore été porté sur Windows.

gm

  • mature
  • fonctionne correctement sur Windows
  • les docs sont ok mais pas complets: j'ai dû regarder dans le code source pour savoir quelle API est disponible
  • malheureusement, il n'y a pas de moyen facile de combiner des images avec GM. Peut-être y at-il un moyen d’y parvenir mais je n’en ai trouvé aucun après deux heures de travail.

node-imagemagick

  • Le référentiel officiel a très peu de commandes ImageMagick de base couvertes, mais j’ai utilisé this fork (bonne chose que NPM puisse extraire des bibliothèques directement à partir des référentiels git). Il a des liaisons pour montage qui fait exactement ce dont j'ai besoin.
  • ImageMagick est assez lent , bien que cela fonctionne sous Windows.

Node-Vips

  • Un énorme avantage: il utilise un incroyable bibliothèque VIPS que je connais bien. VIPS est très rapide et optimisé pour les grandes images. Il est très intelligent d'utiliser des ressources matérielles: si votre ordinateur dispose de beaucoup de RAM), il effectuera tout le traitement en mémoire, mais basculera vers des caches de disque dur si la mémoire est rare ou requise pour d'autres applications. .
  • comme node-canvas, il nécessite Node-Waf, il n'est donc pas encore disponible pour Windows.

J'ai également consulté d'autres bibliothèques de la liste, mais la plupart d'entre elles sont très immatures ou ne conviennent pas à mon cas d'utilisation. J'aimerais vraiment essayer de migrer vers Node-Canvas ou Node-Vips lorsque Node-Waf est porté vers Windows, mais jusque-là, je vais m'en tenir à node-imagemagick.

Je vous conseille vivement de vérifier gm avec GraphicsMagick. Stable, riche en fonctionnalités, API propre, une excellente documentation et rapide.

Et cela fonctionne aussi bien sur Windows que sur Linux/MacOS/BSD/...

6
Pierre

Her est le lien à la mise en œuvre de la toile basée sur GDI +

3
pastorgluk