nodejs Sharp:透明变成白色
nodejs Sharp: transparent into white
我正在使用 Nodejs Sharp 将 png 图像 transcode/resize 转换为 jpg。有没有办法用白色(或其他浅色)而不是黑色代替透明?我找到了一个旧库的解决方案,但 Sharp 似乎是最快和最好的。
.背景不工作
.then( data => Sharp(data.Body)
.resize(SIZES[resize_type].width, SIZES[resize_type].height)
.max()
.withoutEnlargement()
.background("white")
.toFormat('jpeg')
.toBuffer()
)
来自 sharp documentation,因为它声明您可以使用背景进行颜色操作,并且它声明
The default background is {r: 0, g: 0, b: 0, alpha: 1}, black without transparency.
所以为了变白只需使用
.background({r: 255, g: 255, b: 255, alpha: 1})
根据文档,我们应该按照 Msalam 建议的方式进行操作,但不幸的是,这还不够。我发现我们应该在“.resize(...)”之前添加 .flatten(true) 以使其正常工作。
在版本 ^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 } })
我正在使用 Nodejs Sharp 将 png 图像 transcode/resize 转换为 jpg。有没有办法用白色(或其他浅色)而不是黑色代替透明?我找到了一个旧库的解决方案,但 Sharp 似乎是最快和最好的。
.背景不工作
.then( data => Sharp(data.Body)
.resize(SIZES[resize_type].width, SIZES[resize_type].height)
.max()
.withoutEnlargement()
.background("white")
.toFormat('jpeg')
.toBuffer()
)
来自 sharp documentation,因为它声明您可以使用背景进行颜色操作,并且它声明
The default background is {r: 0, g: 0, b: 0, alpha: 1}, black without transparency.
所以为了变白只需使用
.background({r: 255, g: 255, b: 255, alpha: 1})
根据文档,我们应该按照 Msalam 建议的方式进行操作,但不幸的是,这还不够。我发现我们应该在“.resize(...)”之前添加 .flatten(true) 以使其正常工作。
在版本 ^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 } })