Генератор мемов
pip install pillow
# Библиотека для работы с изображениями
from PIL import Image, ImageDraw, ImageFont
import os
# ========== Функция: Создание мема ==========
def create_meme(image_path, top_text, bottom_text, output_path):
"""
Создает мем с текстом сверху и снизу на основе изображения.
"""
# Открываем изображение
img = Image.open(image_path)
draw = ImageDraw.Draw(img)
image_width, image_height = img.size
# Загружаем шрифт (можно заменить на любой TrueType шрифт)
try:
font = ImageFont.truetype("impact.ttf", size=int(image_height/10))
except:
# Если шрифт Impact не найден, берем стандартный
font = ImageFont.load_default()
# Функция для отрисовки текста с контуром
def draw_text(text, y_pos):
text = text.upper()
text_width, text_height = draw.textsize(text, font=font)
x = (image_width - text_width) / 2 # Центрируем текст
# Рисуем контур (чёрный)
outline_range = 2
for dx in range(-outline_range, outline_range+1):
for dy in range(-outline_range, outline_range+1):
if dx != 0 or dy != 0:
draw.text((x+dx, y_pos+dy), text, font=font, fill='black')
# Рисуем основной текст (белый)
draw.text((x, y_pos), text, font=font, fill='white')
# Если задан верхний текст — рисуем его
if top_text:
draw_text(top_text, y_pos=10)
# Если задан нижний текст — рисуем его
if bottom_text:
draw_text(bottom_text, y_pos=image_height - int(image_height/5))
# Сохраняем итоговый мем
img.save(output_path)
print(f"✅ Мем сохранен в: {output_path}")
# ========== Тестирование функции ==========
if __name__ == "__main__":
# Путь к картинке
image_path = "input.jpg" # <-- сюда положи своё изображение
# Тексты для мема
top_text = "КОГДА ПИШЕШЬ КОД"
bottom_text = "И ВСЁ СРАБОТАЛО С ПЕРВОГО РАЗА"
# Путь для сохранения
output_path = "meme_output.jpg"
# Генерируем мем
create_meme(image_path, top_text, bottom_text, output_path)