Node.js 我们可以使用夏普获得图像的高度和宽度吗?

Node.js 我们可以使用夏普获得图像的高度和宽度吗?,node.js,sharp,Node.js,Sharp,我正在使用夏普调整图像的大小。所以我通过保留它们的长宽比将它们的大小调整为500px。另外,我想调整高度为500px,如果高度大于,则自动调整宽度,反之亦然。要做到这一点,我需要得到图像,从图像缓冲区的高度。我知道有相当多的软件包可以这样做。但是我希望如果我能使用sharp buffer本身做到这一点。sharp非常灵活,它有许多调整图像大小的选项。使用fit选项:“contain”可以实现您的愿望 当然,也有其他的,记录在这里: 您还可以指定背景色来填充大小调整后的图像中的空间,我在这里使用白

我正在使用夏普调整图像的大小。所以我通过保留它们的长宽比将它们的大小调整为500px。另外,我想调整高度为500px,如果高度大于,则自动调整宽度,反之亦然。要做到这一点,我需要得到图像,从图像缓冲区的高度。我知道有相当多的软件包可以这样做。但是我希望如果我能使用sharp buffer本身做到这一点。

sharp非常灵活,它有许多调整图像大小的选项。使用fit选项:“contain”可以实现您的愿望

当然,也有其他的,记录在这里:

您还可以指定背景色来填充大小调整后的图像中的空间,我在这里使用白色

代码将如下所示:

const fs = require("fs");
const path = require("path");
const sharp = require("sharp");

const inputDir = "./input-images";
const outputDir = "./output-images";
const requiredDimension = 500;

const inputImages = fs.readdirSync(inputDir).map(file => path.join(inputDir, file));

function resizeImage(imagePath) {

    sharp(imagePath)
    .resize( { width: requiredDimension, height: requiredDimension,  fit: "contain", background: { r: 255, g: 255, b: 255, alpha: 1 }})
    .toFile(path.join(outputDir, path.basename(imagePath) + "-resized" + path.extname(imagePath)), (err, info) => { 
        if (err) {
            console.error("An error occurred resizing image:", err);
        }
    });
}

// Ensure output dir exists...
if (!fs.existsSync(outputDir)) {
    fs.mkdirSync(outputDir)
}
inputImages.forEach(resizeImage);

阅读文档:获取维度。或者只使用resize:它已经可以做你想做的了。有没有办法在任何过渡步骤后获得图像的宽度和高度?假设我做了一个
sharp(img)。调整大小({width:200})
,现在我想知道图像的最终高度是多少(在将其写入文件之前)。您应该能够在图像上使用元数据函数:。这将给你的形象尺寸和更多!