nodejs夏普:透明变成白色

Ser*_*rge 2 transparency jpeg node.js sharp

我正在使用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())
Run Code Online (Sandbox Code Playgroud)

nak*_*dev 15

在版本上,^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 } })
Run Code Online (Sandbox Code Playgroud)


小智 6

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


Fad*_*lam 5

尖锐的文档 中可以看出,你可以使用背景进行颜色处理,并说明了这一点

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

所以为了得到白色简单使用

.background({r: 255, g: 255, b: 255, alpha: 1})
Run Code Online (Sandbox Code Playgroud)