I am using Nodejs Sharp to transcode/resize png images into jpg. Is there way to replace transparent with white (or other light color) rather than black? I found solution for an older library but Sharp seems to be fastest and greatest.
.background does not work
.then( data => Sharp(data.Body)
.resize(SIZES[resize_type].width, SIZES[resize_type].height)
.max()
.withoutEnlargement()
.background("white")
.toFormat('jpeg')
.toBuffer()
)
On version ^0.23
you can use flatten(options)
as api document here: https://sharp.readthedocs.io/en/stable/api-operation/#flatten
sharp('input.png').flatten({ background: { r: 255, g: 255, b: 255 } })
from the sharp documentation as it states that you can use the background for color manipulations and it states that
The default background is {r: 0, g: 0, b: 0, alpha: 1}, black without transparency.
so inorder to get white simply use
.background({r: 255, g: 255, b: 255, alpha: 1})
by the document, we should do the way as Msalam suggest but unluckily that is not enough. I figured out We should add .flatten(true) before ".resize(...)" to make it work correctly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With