Задать вопрос

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

Вот код которым я генерирую и накладываю прямоугольник
Я использую 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
  • Вопрос задан
  • 748 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Решения вопроса 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)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы