Как выставить прозрачность у фотографии при наложении?

Вот код которым я генерирую и накладываю прямоугольник
Я использую Pillow
for_test = round_rectangle((300, 60), 30, "#f2e8c9")
print(main_image.mode)
for_test.putalpha(100)
main_image.paste(for_test, (30, 400), mask=for_test)

Надо наложить квадрат с закругленными краями (RGBA) на фон (RGBA)

5d6e91ee2350e275786795.jpeg
Все хорошо, НО появляются черные цвета там где была "пустота"

История о том как я сделал небольшую прозрачность
Но она все равно недостаточная
А как сделать сильнее я не знаю

>>> ТЫК <<<

for_test = round_rectangle((300, 60), 30, "#f2e8c9")
mask = for_test.convert('L')
for_test.putalpha(mask)
main_image.paste(for_test, (30, 400), mask=for_test)

Фотография стала прозрачнее, но этого мало
5d6e94ac1af7f158376348.png
  • Вопрос задан
  • 462 просмотра
Решения вопроса 1
@o5a
Нужно изменить маску, выборочно добавив прозрачность.

for_test = round_rectangle((300, 60), 30, "#f2e8c9")
print(main_image.mode)
img_mask = for_test.convert("L").point(lambda x: min(x, 150)) # регулируем уровень прозрачности
main_image.paste(for_test, (30, 400), mask=img_mask)


Если накладываем не просто белое изображение, то после создания маски надо будет ее применить к накладываемому изображению, а потом уже делать вставку, используя его как маску. Т.е. вместо последней строчки

for_test.putalpha(img_mask)
main_image.paste(for_test, (30, 30), mask=for_test)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы