2012-09-22 9 views
31

È possibile ottenere la larghezza e l'altezza di un'immagine in node.js (sul lato server, non sul lato client)? Devo trovare la larghezza e l'altezza di un'immagine in una libreria node.js che sto scrivendo.Ottieni la larghezza e l'altezza di un'immagine in node.js

+1

Questo sembra essere un duplicato (e qualcuno ha trovato già una risposta): http://stackoverflow.com/questions/5530946/opening-images-on-nodejs-and-finding-out-width-height –

risposta

27

Sì, questo è possibile ma è necessario installare GraphicsMagick o ImageMagick.

Ho usato entrambi e posso consigliare GraphicsMagick è molto più veloce.

Una volta installato sia il programma che è module, si otterrebbe qualcosa di simile per ottenere la larghezza e l'altezza.

gm = require('gm'); 

// obtain the size of an image 
gm('test.jpg') 
.size(function (err, size) { 
    if (!err) { 
    console.log('width = ' + size.width); 
    console.log('height = ' + size.height); 
    } 
}); 
+0

In questo caso, come posso scrivere una funzione che restituisce 'size.width' per una determinata immagine e richiamare quella funzione al di fuori della callback? –

+2

Inoltre, ecco una domanda correlata: http://stackoverflow.com/questions/12540405/how-can-i-specify-the-order-in-which-node-js-functions-are-evaluated –

+0

Ho fornito un rispondi ad altre domande a cui ti sei collegato. – saeed

78

Installazione GraphicsMagick o ImageMagick non è affatto necessario, la determinazione delle dimensioni di un'immagine è facile come guardare l'intestazione. image-size è una pura implementazione javascript di detta funzione che è molto facile da usare.

https://github.com/netroy/image-size

var sizeOf = require('image-size'); 
sizeOf('images/funny-cats.png', function (err, dimensions) { 
    console.log(dimensions.width, dimensions.height); 
}); 
+8

Questa dovrebbe essere la risposta accettata semplicemente perché gm/im ha molto più overhead del necessario per questa attività. –

+3

C'è un [bug nella dimensione dell'immagine] (https://github.com/netroy/image-size/issues/37). L'ho appena vissuto in produzione. GraphicsMagick non ha lo stesso bug. – paldepind

3

https://github.com/nodeca/probe-image-size

problema Più interessante è "come rilevare le dimensioni dell'immagine senza download completo di file da un server remoto". probe-image-size aiuterà. Di causa, supporta anche flussi locali.

È scritto in JS puro e non richiede alcuna dipendenza pesante (ImageMagick e così via).

0
var sizeOf = require('image-size'); 
    sizeOf(my_file_item.completeFilename, function (err, dimensions) { 
     try{ 
      if(!err){ 
      let image_dimensions = dimensions || ""; 
      let width = 200; // we want 200 
      let height = parseInt(width/(image_dimensions.width/image_dimensions.height)); 


      }else{ 

      } 
      // console.log(ex); 
     }catch(ex){ 

     } 
     }); 
Problemi correlati