Quale libreria devo usare per la manipolazione delle immagini lato server su Node.JS? [chiuso]


117

Ho trovato un elenco abbastanza ampio di librerie disponibili sul wiki di Node.JS ma non sono sicuro di quale di queste sia più matura e fornisca prestazioni migliori. Fondamentalmente voglio fare quanto segue:

  1. caricare alcune immagini su un server da fonti esterne
  2. mettili su una grande tela
  3. ritagliarli e mascherarli un po '
  4. applicare uno o due filtri
  5. Ridimensiona l'immagine finale e fornisci un collegamento

Un grande vantaggio se il pacchetto del nodo funziona sia su Linux che su Windows .


Domanda già risposto qui: stackoverflow.com/questions/4541332/...
DjebbZ

2
2015: anche questo sembra legittimo: github.com/oliver-moran/jimp
jmunsch

@jm_____ stackoverflow è sia un Q&A che un wiki. sentiti libero di modificare la risposta in modo che più persone la notino.
Andrew Андрей Листочкин

Risposte:


184

Rispondendo alla mia stessa domanda

Ho passato due giorni a esplorare le librerie grafiche di Node.js.

nodo tela

  • L'ho provato per primo poiché ho abbastanza familiarità con l' <canvas>API. È un enorme vantaggio per una biblioteca.
  • richiede Cairo che non ha un facile download di Windows. L'ho trovato nella distribuzione GTK + però.
  • inoltre necessita del codice di binding della libreria nativa da compilare durante l'installazione del modulo. Utilizza Node-Waf che non è stato ancora portato su Windows.

gm

  • maturo
  • funziona su Windows senza problemi
  • i documenti sono ok ma non esaustivi: ho dovuto cercare nel codice sorgente per capire quale API fosse disponibile
  • sfortunatamente non esiste un modo semplice per combinare le immagini con gm. Forse c'è un modo per ottenerlo, ma non ne ho trovato uno dopo due ore trascorse con esso.

node-imagemagick

  • Il repository ufficiale ha pochissimi comandi ImageMagick di base coperti, ma ho usato questo fork (cosa buona che NPM può estrarre le librerie direttamente dai repository git). Ha attacchi per i montagequali fa esattamente ciò di cui ho bisogno.
  • ImageMagick è piuttosto lento , sebbene funzioni su Windows.

Nodo-Vips

  • Enorme vantaggio: utilizza un'incredibile libreria VIPS con cui ho familiarità. VIPS è molto veloce e ottimizzato per immagini di grandi dimensioni. È molto intelligente nell'utilizzo delle risorse hardware: se la tua macchina ha molta RAM, eseguirà tutte le elaborazioni in memoria, ma passerà alle cache del disco rigido se la memoria è scarsa o necessaria per altre applicazioni.
  • uguale a node-canvas richiede Node-Waf quindi non è ancora disponibile per Windows.

Ho anche esaminato altre librerie dall'elenco, ma la maggior parte di esse sono molto immature o non si adattano al mio caso d'uso. Mi piacerebbe davvero provare a migrare a Node-Canvas o Node-Vips quando Node-Waf viene portato su Windows, ma fino ad allora mi atterrò a node-imagemagick.


44
Grazie per essere tornato a rispondere alla tua stessa domanda. Ottima scrittura!
mpen

Su Windows gm mi è sembrato un po 'lento, anche se penso che ciò sia in parte dovuto al tempo impiegato per generare istanze dell'eseguibile gm.
Gareth Oakley

11
L'ora è cambiata e NODE-Vips ha avuto 1 anno + nessun aggiornamento. Consiglio invece di aggiungere Sharp all'elenco. Utilizza anche VIPS ed è gestito attivamente: github.com/lovell/sharp
Simon Fakir

5
Per coloro che si pongono questa domanda in questi giorni, LWIP è un'altra buona alternativa. Nessuna dipendenza esterna, si basa su un addon C ++ node.js.
MaxArt

1
github.com/lovell/sharp , un altro nodo vincolante per libvips, ora funziona su Windows.
jcupitt

6

Ti consiglio vivamente di controllare gm con GraphicsMagick. API stabile, ricca di funzionalità, pulita, ottimi documenti e veloce.

E funziona sia su Windows che su Linux / MacOS / BSD / ...


3

Questo è il collegamento all'implementazione della tela basata su GDI +


1
Non riesco affatto a far funzionare questa cosa. Ricevo semplicemente "% 1 non è un'applicazione Win32 valida" non appena lo richiedo.
mpen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.