首页 > 解决方案 > 如何使用“包含”选项调整图像的大小,但保留原始尺寸的纵横比?

问题描述

我有一个 1000 像素 x 750 像素的图像。

我使用 lovell/sharp 来调整它的大小:

await sharp(image)
    .resize({
        fit: sharp.fit.contain,
        width: 800,
        height: 800
    })
    .jpeg({ quality: 80 })
    .toBuffer()

这会生成一个 800 像素 x 800 像素的新图像,原始图像“包含”在该区域内。

我真正想要的是有一个 800 像素 x 600 像素的最终图像。IOW,调整图像大小并保留纵横比。

我意识到可以通过仅指定宽度来做到这一点。然而,有一个边界框来包含调整大小的图像是有用的,以避免创建大于特定高度的图像。

我可以用不同的设置快速执行此操作吗?

标签: javascriptnode.jssharp

解决方案


保持其中一个widthheight以便夏普将保持该比率

调整大小时低于高度将保持其比例;

await sharp(image)
    .resize({
        fit: sharp.fit.contain,
        width: 800
    })
    .jpeg({ quality: 80 })
    .toBuffer()

推荐阅读