2011-04-03 45 views
14

非常感謝您的幫助。我需要的是相當於一個「新的圖像()」(然後myImage.src ...等),但在NodeJS上。我會感謝那些在我內心深處回答的人......並且還說,「謝謝!」 :P在NodeJS上打開圖像並找出寬度/高度

+0

最好的辦法可能是弄清楚如何將ImageMagick(或GraphicsMagick)C運行時集成到Node中。 – Pointy 2011-04-03 16:56:16

回答

16

node-imagemagick(顯然你需要有ImageMagick)。

var im = require('imagemagick'); 
im.identify('kittens.jpg', function(err, features){ 
    if (err) throw err 
    console.log(features) 
    // { format: 'JPEG', width: 3904, height: 2622, depth: 8 } 
}) 
+3

Zerosocrates,我可以讓你的孩子?哈哈對不起,我沒有睡覺,我肚子痛:(但至少我編程,並有比薩餅。 – Mamsaac 2011-04-03 17:26:30

+3

@ john-flatness任何想法如何做到這一點在內存? – 2012-04-05 10:05:36

+0

這不適用於'https:// '在網址上呢? – Sahan 2016-01-22 04:35:35

17

使用imagemagick這是非常矯枉過正,因爲您只想讀取文件的標題並檢查尺寸。 image-size是一個純粹的JavaScript實現的功能,這是非常容易使用。

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

var sizeOf = require('image-size') 

sizeOf('images/funny-cats.png', function (err, dimensions) { 
    if (err) throw err 

    console.log(dimensions.width, dimensions.height) 
}) 
+0

太棒了!正是我在找的東西。 – hitautodestruct 2014-01-09 15:41:57

2

https://github.com/nodeca/probe-image-size,應該幫助。小型+同步/異步模式+網址支持。

var probe = require('probe-image-size'); 

// Get by URL 
// 
probe('http://example.com/image.jpg', function (err, result) { 
    console.log(result); // => { width: xx, height: yy, type: 'jpg', mime: 'image/jpeg', wUnits: 'px', hUnits: 'px' } 
}); 

// From the stream 
// 
var input = require('fs').createReadStream('image.jpg'); 

probe(input, function (err, result) { 
    console.log(result); 
    // => { width: xx, height: yy, type: 'jpg', mime: 'image/jpeg', wUnits: 'px', hUnits: 'px' } 

    // terminate input, depends on stream type, 
    // this example is for fs streams only. 
    input.destroy(); 
}); 

// From a Buffer 
// 
var data = require('fs').readFileSync('image.jpg'); 

console.log(probe.sync(data)); // => { width: xx, height: yy, type: 'jpg', mime: 'image/jpeg', wUnits: 'px', hUnits: 'px' } 

聲明:我是該代碼的作者。