nodejs Sharp: прозрачный в белый

Я использую Nodejs Sharp для перекодирования / изменения размера изображений PNG в JPG. Есть ли способ заменить прозрачный на белый (или другой светлый цвет) вместо черного? Я нашел решение для старой библиотеки, но Sharp, кажется, самый быстрый и лучший.

.background не работает

.then(data => Sharp(data.Body).resize(SIZES[resize_type].width, SIZES[resize_type].height).max().withoutEnlargement().background("white").toFormat('jpeg') .toBuffer())

4 ответа

Решение

Согласно документу, мы должны поступить так, как предлагает Мсалам, но, к несчастью, этого недостаточно. Я понял, что мы должны добавить.flatten(true) перед ".resize(...)", чтобы он работал правильно.

По версии ^0.23 вы можете использовать flatten(options)как документ api здесь: https://sharp.readthedocs.io/en/stable/api-operation/

sharp('input.png').flatten({ background: { r: 255, g: 255, b: 255 } })

Из четкой документации, поскольку в нем говорится, что вы можете использовать фон для цветовых манипуляций, и он утверждает, что

Фон по умолчанию: {r: 0, g: 0, b: 0, alpha: 1}, черный без прозрачности.

поэтому чтобы получить белый цвет просто используйте

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

Просто добавь :

      .flatten({ background: '#fff' })
Другие вопросы по тегам