使用Node.js和Sharp包进行非裁剪的PNG图像调整大小

3

我正在尝试使用Nodejs的sharp软件包调整图像大小/转换为png格式,但不裁剪。根据文档,应该使用.max()方法,但令人遗憾的是,当调整大小为png时,该方法不起作用(图像被裁剪)。有什么解决方法吗?

2个回答

6
如果你正在使用sharp,那么你可以使用以下方式实现所需的结果。
sharp()
  .resize(400, 400, {
    fit: sharp.fit.inside,
    withoutEnlargement: true, // if image's original width or height is less than specified width and height, sharp will do nothing(i.e no enlargement)
  })
  • inside:将图像缩放至宽度和高度均不超过400,在不裁剪图像任何部分的情况下,也不添加黑色填充来调整输出图像的尺寸。
  • 技术上,它会将图像调整到最大可能尺寸,同时确保其尺寸小于或等于指定的两个尺寸。

1

嘿,如果你还在犹豫不决,这就是你可以做到的方法。

await sharp(postImage).resize(800, 900, {fit:"contain"}).toFile("/output/path");

在.resize()的第三个参数中,你需要提及适合的方式,可以是'fill','contain'等。'contain'会嵌入图像而不改变其原始高度和宽度,并用背景颜色(默认为黑色)填充。'fill'会拉伸图像。了解更多

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接