获取node.js中图像的宽度和高度

And*_*een 43 node.js

是否可以在node.js中获取图像的宽度和高度(在服务器端,而不是客户端)?我需要在我正在编写的node.js库中找到图像的宽度和高度.

Lin*_*äck 110

安装GraphicsMagickImageMagick根本不需要,确定图像的尺寸就像查看标题一样简单.image-size是所述功能的纯javascript实现,非常容易使用.

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

  • 这应该是公认的答案,因为gm/im比此任务需要更多的开销. (16认同)
  • 有一个[图片大小的错误](https://github.com/netroy/image-size/issues/37).我刚刚在生产中体验过它.GraphicsMagick没有相同的bug. (5认同)
  • 一点也不。image-size在大jpg文件上给出“损坏的JPG,超出缓冲区限制”错误 (2认同)

sae*_*eed 38

是的,这是可能的,但您需要安装GraphicsMagickImageMagick.

我已经使用了两者,我可以更快地推荐GraphicsMagick.

一旦你安装了程序和它的模块,你会做这样的事情来获得宽度和高度.

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

  • 这是一个很好的例子,为什么你应该总是使用大括号,只有第一个`console.log`被`if`语句覆盖. (3认同)
  • 此外,这是一个相关的问题:http://stackoverflow.com/questions/12540405/how-can-i-specify-the-order-in-which-node-js-functions-are-evaluated (2认同)

Vit*_*aly 11

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

更有趣的问题是"如何在没有从远程服务器下载完整文件的情况下检测图像大小".probe-image-size会有所帮助.当然,它也支持本地流.

它是用纯JS编写的,不需要任何重依赖(ImageMagick等).