Node.js Sharp:透明转白色

13

我正在使用Nodejs Sharp将png图片转码/调整大小为jpg。是否有办法用白色(或其他浅色)替换透明而不是黑色?我找到了一个较旧的库的解决方案,但是Sharp似乎是最快最好的。

.background无效。

.then( data => Sharp(data.Body)
  .resize(SIZES[resize_type].width, SIZES[resize_type].height)
  .max()
  .withoutEnlargement()
  .background("white")
  .toFormat('jpeg')
  .toBuffer()
)

哈哈,我想要相反的。 - Simon_Weaver
4个回答

29

1
注意:您还可以使用.flatten({ background: '#ffffff' })使其变为白色。 - nakorndev

11
Sharp文档中可以看到,您可以使用背景进行颜色操作,并且它还说明:

默认背景是{r: 0, g: 0, b: 0, alpha: 1},即不透明的黑色。

因此,要获取白色,只需使用:

.background({r: 255, g: 255, b: 255, alpha: 1})

6
根据文档,我们应该按照 Msalam 的建议进行操作,但不幸的是这并不足够。我发现在“.resize(...)”之前加上“.flatten(true)”可以使其正常工作。

2

只需添加:

.flatten({ background: '#fff' })

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