我正在使用夏普来调整图像的大小。因此,我通过保留它们的纵横比将它们的大小调整为500px。另外,我想调整高度到500px和自动调整宽度,如果高度大于,反之亦然。为了做到这一点,我需要从图像缓冲区获取图像,高度。我知道有相当多的软件包可以这样做。但是我希望如果我可以使用sharp buffer本身来做到这一点。
发布于 2020-06-30 08:46:28
夏普非常灵活,它有许多用于调整图像大小的选项。使用fit:"contain“选项可以实现您所希望的结果。
当然还有其他的,记录在这里:https://sharp.pixelplumbing.com/api-resize#resize
您还可以指定背景颜色来填充调整大小的图像中的空间,我这里使用白色。
代码将如下所示:
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);
https://stackoverflow.com/questions/62653165
复制