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})