Как на Python сделать картинку с подсветкой текста?

Вот таким кодом на HTML могу сделать так, чтобы текст подсвечивался:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Тест</title>
    </head>
    <body style="background-color: black; color: white; text-shadow: 1px 0 50px white; font-size: 50px;">
        <div style="top: 100px; left: 100px; position: absolute;">Тестовый текст</div>
    </body>
</html>

Подсветка работает от этой строчки -> text-shadow: 1px 0 50px white;

Как мне сделать такой же эффект только на Python?


Ответы (1 шт):

Автор решения: Amgarak

Используйте библиотеку Pillow. Вот небольшой пример:

from PIL import Image, ImageDraw, ImageFilter, ImageFont

# Параметры для будущего изображения
width = 400
height = 200
background_color = (0, 0, 0)  # Задаём цвет фона - черный 
image = Image.new("RGB", (width, height), background_color)

# ImageDraw для рисования на изображении
draw = ImageDraw.Draw(image)

# ImageFont для установки шрифта и размера
font_size = 50
font = ImageFont.truetype("times.ttf", font_size)

# Добавляем текст 
text = "Тестовый текст"
text_color = (255, 255, 255)  # Белый цвет
# Определяем координаты текста
text_position = (35, (height - font_size) // 2)
draw.text(text_position, text, fill=text_color, font=font)

# Что бы сделать свечение текста, добавим прямоугольник
# Определяем координаты прямоугольника
left_top = (30,  (height - font_size) // 2)
right_bottom = (380, 130)

# Создаем новое изображение для прямоугольника
rectangle_image = Image.new("RGBA", image.size, (0, 0, 0, 0))
draw_rectangle = ImageDraw.Draw(rectangle_image)
rectangle_color = (255, 255, 255, 100)  # Белый цвет с прозрачностью 100
draw_rectangle.rectangle([left_top, right_bottom], fill=rectangle_color)

# Размываем прямоугольник
blurred_rectangle = rectangle_image.filter(ImageFilter.GaussianBlur(25))

# Добавляем изображение прямоугольника к изображению с черным фоном и нашим текстом
image = Image.alpha_composite(image.convert("RGBA"), blurred_rectangle)

# Сохраняем изображение
image.save("test_text.png")

введите сюда описание изображения

Документация

→ Ссылка