nodejs夏普:透明变成白色

时间:2017-12-14 16:38:10

标签: node.js jpeg transparency 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())

3 个答案:

答案 0 :(得分:5)

来自sharp documantation

,因为它声明您可以使用背景进行颜色处理,并说明

  

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

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

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

在版本^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 } })