如何使用“包含”选项清晰地调整图像大小但保留原始尺寸的纵横比?

新手上路,请多包涵

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

我使用 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,调整图像大小并保持纵横比。

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

我可以用不同的设置清晰地做到这一点吗?

原文由 user1031947 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 248
1 个回答

保留 widthheight 以便 Sharp 保持比率

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

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

原文由 mapmalith 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题