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

Как в данном коде сделать часть текста желтым цветом?

Здравствуйте! Я совсем любитель, и данный код отвечает за дизайн текста, который берется из основного файла и формирует картинку с текстом.
Задача: как сделать так чтоб все двоеточия ":" (этот знак) окрашивались в желтый цвет, а остальной текст, его расположение и цвет не менялись. Я замучился, помогите.

from PIL import Image, ImageDraw, ImageFont

def create_advertisement_image(text, output_path="advertisement.png"):
    # Проверяем, кого ищут (Мужа или Жену)
    if 'Жену' in text:
        # Цвета для Мужа
        background_color = '#c02d23'  # Красный фон
        text_color = '#fafeff'  # Белый текст
        shadow_color = '#9b0a1f'  # Тень для текста
    elif 'Мужа' in text:
        # Цвета для Жены
        background_color = '#7e4db8'  # Светлый розовый фон
        text_color = '#fafeff'  # Белый текст
        shadow_color = '#67418e'  # Тень для текста
    else:
        # Если не найдено ключевых слов, используем дефолтные цвета
        background_color = '#FFE8B7'
        text_color = '#5E0D26'
        shadow_color = '#9b0a1f'
    
    # Создаем изображение с выбранным фоном
    image = Image.new('RGB', (1080, 1080), color=background_color)
    draw = ImageDraw.Draw(image)

    # Пробуем загрузить шрифт. Указываем полный путь к файлу шрифта (например, Nunito-Black.ttf)
    try:
        font_regular = ImageFont.truetype('Nunito-Black.ttf', size=50)  # Обычный шрифт
        font_large = ImageFont.truetype('Nunito-Black.ttf', size=80)  # Большой шрифт для "Ищу: Жену"
    except IOError:
        print("Ошибка загрузки шрифта. Используется шрифт по умолчанию.")
        font_regular = ImageFont.load_default()
        font_large = ImageFont.load_default()

    margin = 50
    text_position = (margin, margin)
    
    # Проверяем, где встречается "Ищу: Жену" или "Ищу: Мужа" и разделяем текст
    if 'Ищу: Жену' in text:
        part1 = "            Ищу: Жену"  # Выделенный текст
        part2 = text.replace(part1, "")  # Оставшийся текст
    elif 'Ищу: Мужа' in text:
        part1 = "            Ищу: Мужа"  # Выделенный текст
        part2 = text.replace(part1, "")  # Оставшийся текст
    else:
        part1 = ""  # Если нет такого текста
        part2 = text  # Всё остальное

    # Рисуем тень и текст для части 1 (больший шрифт для "Ищу: Жену" или "Ищу: Мужа")
    draw.text((text_position[0] + 6, text_position[1] + 6), part1, font=font_large, fill=shadow_color)
    draw.text(text_position, part1, font=font_large, fill=text_color)
    
    # Рисуем тень и текст для части 2 (обычный шрифт для остальной части)
    draw.text((text_position[0] + 6, text_position[1] + 6 + 80), part2, font=font_regular, fill=shadow_color)  # Смещаем по вертикали
    draw.text((text_position[0], text_position[1] + 80), part2, font=font_regular, fill=text_color)  # Смещаем по вертикали

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

# Открываем текстовый файл (не шрифт) в кодировке UTF-8
with open('your_text_file.txt', 'r', encoding='utf-8') as file:
    text = file.read()

# Вызываем функцию для создания изображения
create_advertisement_image(text)
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽