nodejs Sharp: transparent into white

10,117

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})
Share:
10,117
Serge
Author by

Serge

I am professional software developer

Updated on July 15, 2022

Comments

  • Serge
    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
    nakorndev over 2 years
    Note: You also can use .flatten({ background: '#ffffff' }) to make it's white.