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

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

74493 次浏览

是的,这是可能的,但您将需要安装 图形魔术图像魔术

我都用过,我可以推荐 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);
}
});

根本不需要安装 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);
});

Calipers 是另一个可以确定图像尺寸的纯 Javascript 库。

Https://github.com/calipersjs/calipers

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

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

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

var sizeOf = require('image-size');
sizeOf(my_file_item.completeFilename, function (err, dimensions) {
try{
if(!err){
let image_dimensions = dimensions || "";
let width = 200; // we want 200
let height = parseInt(width/(image_dimensions.width/image_dimensions.height));




}else{


}
// console.log(ex);
}catch(ex){


}
});

我使用了 Jimp: < a href = “ https://www.npmjs.com/package/Jimp”rel = “ nofollow norefrer”> https://www.npmjs.com/package/Jimp Npm 安装——保存 jimp

const jimage1 = await Jimp.read(imgBuffer);
const jimage2 = await Jimp.read(imgUrl);
const width = jimage1.bitmap.width;

它实际上是像素匹配的包装器

使用 multer 实现这一点的最简单方法是使用 buffer-image-size

我已经使用 缓冲区图像大小缓冲区图像大小来验证图像尺寸。我需要验证确切的图像大小之前,上传到桶。

var sizeOf = require('buffer-image-size');
var dimensions = sizeOf(yourImageBuffer);
console.log(dimensions.width, dimensions.height);

例如:

Router.js

Router.post('/upload_image',
multerUpload.single('image'),     // multer upload configuration
imageDimensionHandler(500,200),   // here I validate image dimension
upload_image_controller           // controller function
);

这是我在使用 multerUpload.single('image')中间件之后使用的中间件。

Js (中间件)

const sizeOf = require('buffer-image-size');


const imageDimensionHandler = (width, height) => (async (req, res, next) => {
if (req.file) {
const fileBuffer = req.file.buffer;
var dimensions = sizeOf(fileBuffer);


if (width == dimensions.width && height == dimensions.height) {
next();
} else {
throw new Error(`expected image size is ${condition.width} x ${condition.height} pixel.`);
}
} else {
next();
}
});

注意: 如果你觉得它不适合你,请忽略它。