javascript - 如何使用“包含”选项调整图像的大小,但保留原始尺寸的纵横比?
问题描述
我有一个 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,调整图像大小并保留纵横比。
我意识到可以通过仅指定宽度来做到这一点。然而,有一个边界框来包含调整大小的图像是有用的,以避免创建大于特定高度的图像。
我可以用不同的设置快速执行此操作吗?
解决方案
保持其中一个width
或height
以便夏普将保持该比率
调整大小时低于高度将保持其比例;
await sharp(image)
.resize({
fit: sharp.fit.contain,
width: 800
})
.jpeg({ quality: 80 })
.toBuffer()
推荐阅读
- c++ - 复制构造函数打开 allocator.h 时出错
- oracle - 如何处理 PL-SQL 包错误 PLS-00103:在预期以下情况之一时遇到符号“(”::=)
- c - 我怎样才能从这个函数取回我的主函数的迭代值?
- react-native - rn-apple-healthkit 需要更多信息才能开始使用它
- sql - 在sql查询中,是否有声明Join的顺序?
- javascript - 基本/愚蠢的问题。为什么两个图书馆在我看来像是两个不同的世界?(p5.js - two.js)
- javascript - Nodejs-异步函数-TypeError:无法设置未定义的属性“温度”
- python - 写一个不同名字的文件
- django - 我必须使用 Redux 和 React 进行身份验证吗?
- ssh - 在我几乎无法控制服务器的情况下,如何通过 SSH 连接轻松编辑文件?