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