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


117

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

  1. charger des images sur un serveur à partir de sources externes
  2. les mettre sur une grande toile
  3. les recadrer et les masquer un peu
  4. appliquer un filtre ou deux
  5. Redimensionner l'image finale et lui donner un lien

Gros plus si le package de nœuds fonctionne à la fois sous Linux et Windows .


Question déjà répondue ici: stackoverflow.com/questions/4541332/…
DjebbZ

2
2015: cela semble également légitime: github.com/oliver-moran/jimp
jmunsch

@jm_____ stackoverflow est à la fois un Q&A et un wiki. n'hésitez pas à modifier la réponse afin que plus de gens la remarquent.
Andrew Андрей Листочкин

Réponses:


184

Répondre à ma propre question

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

noeud-canevas

  • Je l'ai essayé en premier car je suis assez familier avec l' <canvas>API. C'est un énorme avantage pour une bibliothèque.
  • il nécessite Cairo qui ne dispose pas d'un téléchargement Windows facile. Je l'ai trouvé dans la distribution GTK +.
  • 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 sous Windows
  • les documents sont corrects mais pas complets: j'ai dû chercher dans le code source pour déterminer quelle API est disponible
  • malheureusement, il n'y a pas de moyen facile de combiner des images avec gm. Il y a peut-être un moyen d'y parvenir, mais je n'en ai pas trouvé après deux heures passées avec.

node-imagemagick

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

Node-Vips

  • Énorme plus: il utilise une 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 les ressources matérielles: si votre machine a beaucoup de RAM, elle effectuera tout le traitement en mémoire, mais passera aux caches de disque dur si la mémoire est rare ou requise pour d'autres applications.
  • identique à node-canvas, il nécessite Node-Waf donc il n'est pas encore disponible pour Windows.

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


44
Merci d'être revenu pour répondre à votre propre question. Super écrire!
mpen

Sous Windows, gm m'a semblé un peu lent - même si je pense que cela est en partie dû au temps qu'il a fallu pour générer des instances de l'exécutable gm.
Gareth Oakley

11
L'heure a changé et NODE-Vips avait 1 an + aucune mise à jour. Je recommande plutôt d'ajouter Sharp à la liste. Il utilise également VIPS et est activement
Simon Fakir

5
Pour ceux qui abordent cette question ces jours-ci, LWIP est une autre bonne alternative. Pas de dépendances externes, il repose sur un addon C ++ node.js.
MaxArt

1
github.com/lovell/sharp , une autre liaison de nœud pour libvips, fonctionne désormais sous Windows.
jcupitt

6

Je vous conseille fortement de vérifier gm avec GraphicsMagick. API stable, riche en fonctionnalités, propre, d'excellents documents et rapide.

Et cela fonctionne à la fois sur Windows et Linux / MacOS / BSD / ...


3

Elle est le lien vers l'implémentation du canevas basé sur GDI +


1
Je ne peux pas du tout faire fonctionner cette chose. J'obtiens juste "% 1 n'est pas une application Win32 valide" dès que j'en ai besoin.
mpen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.