9

我正在使用 Nodejs Sharp 将 png 图像转码/调整大小为 jpg。有没有办法用白色(或其他浅色)而不是黑色代替透明?我找到了旧图书馆的解决方案,但夏普似乎是最快和最好的。

.background 不起作用

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

3 回答 3

20

在版本上^0.23,您可以flatten(options)在此处用作 api 文档:https ://sharp.readthedocs.io/en/stable/api-operation/#flatten

sharp('input.png').flatten({ background: { r: 255, g: 255, b: 255 } })
于 2019-12-24T03:03:46.300 回答
8

尖锐的文档 中,因为它指出您可以使用背景进行颜色操作,并指出

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

所以为了得到白色只需使用

.background({r: 255, g: 255, b: 255, alpha: 1})
于 2018-04-11T11:24:15.780 回答
6

根据文件,我们应该按照 Msalam 建议的方式行事,但不幸的是,这还不够。我发现我们应该在“.resize(...)”之前添加 .flatten(true) 以使其正常工作。

于 2018-04-13T03:44:23.250 回答