nodejs Sharp: transparent into white
Solution 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.
Solution 2
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 } })
Solution 3
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})
Comments
-
Serge almost 2 years
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() )
-
nakorndev over 2 yearsNote: You also can use
.flatten({ background: '#ffffff' })
to make it's white.