从URL路径获取图像尺寸

7
我正在尝试从URL加载图像的尺寸。目前为止,我已经尝试使用 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源路径时。

更新

img.attribs.src的值:

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


1
那个字符串的值是多少? - SLaks
@SLaks更新了问题。 - Mj1992
它需要一个文件路径,而不是一个URL。 - SLaks
我知道@SLaks,但我想使用“URL”执行操作。你有任何想法如何实现吗? - Mj1992
4个回答

25

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

免责声明:我是这个软件包的作者。


上个月有4,679人使用https://www.npmjs.com/package/probe-image-size,他们的选择绝不会错! - Nick Grealy
705kb 对我来说有点重,说实话:https://bundlephobia.com/result?p=probe-image-size@5.0.0 - Til
提醒一下,这个包现在只有340kB了,而且运行得非常好!感谢@Vitaly! - Teagan Atwater

5
您需要做的是首先下载文件。最简单的方法是使用request模块。有趣的是,requestgm模块都可以使用streams。但需要记住当使用流和gm的identify命令(如大小、格式等)时,您需要将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);
});

您也可以通过请求将文件下载到磁盘上,然后像平常一样使用gm

2

我使用了这个库来成功执行操作。


0

你需要使用image-size 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');
        }


});

你想从URL加载图像吗?sizeOf('http://www.example.com/image.png'... 是的,这可能有效,我没有尝试过。 - Muhammad Ali
有不同的方法可以使用URL图像,请参见页面https://www.npmjs.org/package/image-size。 - Muhammad Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接