从网址路径获取图片尺寸

时间:2014-07-06 18:08:07

标签: node.js graphicsmagick

我正在尝试从网址加载图片的尺寸。到目前为止,我已尝试使用GraphicsMagick,但它给了我ENOENT错误。

到目前为止,这是我编写的代码。

var gm = require('gm');

...

gm(img.attribs.src).size(function (err, size) {
      if (!err) {
            if( size.width>200 && size.height>200)
            {
                console.log('Save this image');
            }
      }
}); 

img.attribs.src包含图片的url source path

更新

img.attribs.src

的值

http://rack.1.mshcdn.com/assets/header_logo.v2-30574d105ad07318345ec8f1a85a3efa.png

4 个答案:

答案 0 :(得分:7)

https://github.com/nodeca/probe-image-size它完全是你问的,没有严重的依赖。此外,它只下载必要的文件和平。

示例:

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

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'
  //    }
});

免责声明:我是此套餐的作者。

答案 1 :(得分:5)

您要做的是先下载文件。最简单的方法是使用request模块。很酷的是,requestgm都可以使用streams。在使用流和gm识别命令(如大小,格式等)时,您唯一需要记住的是,您需要将bufferStream选项设置为true。更多信息here

var gm = require('gm');
var request = require('request');
var url = "http://strabo.com/gallery/albums/wallpaper/foo_wallpaper.sized.jpg";

var stream = request(url);
gm(stream, './img.jpg').size({ bufferStream: true }, function (err, size) {
    if (err) { throw err; }
    console.log(size);
});

您也可以在磁盘上下载文件(也可以使用请求),然后正常使用gm

答案 2 :(得分:2)

我已使用this库成功执行操作。

答案 3 :(得分:0)

你需要图片大小的NPM,这项工作对我来说很好,希望你的工作

var sizeOf = require('image-size');
sizeOf('/images/'+adsImage, function (err, dimensions) {
        var imgwidth= dimensions.width;
        var imgheight= dimensions.height;
        console.log(imgheight +" = = = =  "+imgwidth)
  if( imgwidth>200 && imgheight>200)
        {
            console.log('Save this image');
        }


});