nodejs Sharp:透明成白色

问题描述 投票:0回答:4

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

.背景不起作用

.then( data => Sharp(data.Body)
  .resize(SIZES[resize_type].width, SIZES[resize_type].height)
  .max()
  .withoutEnlargement()
  .background("white")
  .toFormat('jpeg')
  .toBuffer()
)
node.js jpeg transparency sharp
4个回答
35
投票

在版本

^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 } })

11
投票

来自 sharp 文档,因为它指出您可以使用背景进行颜色操作,并且它指出

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

所以为了变白只需使用

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

7
投票

根据文件,我们应该按照Msalam建议的方式去做,但不幸的是这还不够。我发现我们应该在

.flatten(true)
之前添加
.resize(...)
才能使其正常工作。


2
投票

只需添加:

.flatten({ background: '#fff' })
© www.soinside.com 2019 - 2024. All rights reserved.