从网址路径获取图片尺寸

Mj1*_*992 3 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');
            }
      }
}); 
Run Code Online (Sandbox Code Playgroud)

哪里img.attribs.src包含url source path图像.

更新

的价值 img.attribs.src

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

Vit*_*aly 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'
  //    }
});
Run Code Online (Sandbox Code Playgroud)

免责声明:我是这个包的作者.


小智 5

你想要做的是先下载文件.最简单的方法是使用请求模块.很酷的事情是,无论requestgm可以使用.使用流和gm的标识命令(如大小,格式等)时,您需要记住的唯一事项是您需要设置bufferStream选项true.更多信息在这里.

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);
});
Run Code Online (Sandbox Code Playgroud)

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


Mj1*_*992 2

我已经使用这个库成功地执行了操作。