Для работы с гиф-изображениями в Python можно использовать библиотеку Pillow. Вот пример кода, который разбирает гиф-изображение на отдельные кадры, добавляет текст на каждый кадр и затем собирает гиф-анимацию обратно:
```python
from PIL import Image, ImageDraw, ImageFont
def process_gif(input_filename, output_filename, text):
# Открытие гиф-изображения
gif = Image.open(input_filename)
# Сохранение каждого кадра гиф-изображения
frames = []
for frame in range(gif.n_frames):
gif.seek(frame)
frame_image = gif.copy()
frames.append(frame_image)
# Добавление текста на каждый кадр
font = ImageFont.truetype("path/to/font.ttf", 20) # Замените "path/to/font.ttf" на путь к шрифту
for frame_image in frames:
draw = ImageDraw.Draw(frame_image)
draw.text((10, 10), text, font=font, fill="white")
# Сохранение кадров в виде изображений
frames[0].save(
output_filename,
save_all=True,
append_images=frames[1:],
duration=gif.info["duration"],
loop=0,
)
# Пример использования
input_filename = "path/to/input.gif" # Замените "path/to/input.gif" на путь к гиф-изображению
output_filename = "path/to/output.gif" # Замените "path/to/output.gif" на путь для сохранения результирующей гиф-анимации
text = "Пример текста" # Замените "Пример текста" на текст, который нужно добавить на каждый кадр
process_gif(input_filename, output_filename, text)
```
В этом коде мы используем библиотеку Pillow для работы с изображениями. Она позволяет открыть гиф-изображение, сохранить каждый его кадр в виде отдельного изображения, добавить текст на каждый кадр и, наконец, собрать кадры обратно в гиф-анимацию. При сохранении гиф-анимации указываются параметры duration и loop, чтобы сохранить оригинальное время задержки и повторение анимации.
Важно отметить, что при сборке гиф-анимации обратно может быть незначительная потеря качества, так как формат GIF использует потери для сжатия изображений.