Подушка для рисования текста на изображении — очистка между итерациями Python

#python-3.x #python-imaging-library

#python-3.x #python-imaging-library

Вопрос:

У меня есть изображение в качестве шаблона, и я хочу написать на нем несколько разных имен из списка.

 from PIL import ImageDraw
from PIL import Image

image = Image.open(path)

for name in list:

    draw = ImageDraw.Draw(loaded_image)

    draw.text(text)
    
    image.save(my_path)

  

Проблема в том, что текст, нарисованный на сохраненных изображениях, продолжает оставаться, даже если они должны быть разными ссылками. Кто-нибудь знает, как сделать каждое изображение со своим собственным текстом?

Есть ли какой-либо ЧЕТКИЙ метод для самого изображения? Для запуска между чертежами?

Ответ №1:

Каждый раз, прежде чем писать на нем, делайте новую копию оригинала, вот так:

 from PIL import Image, ImageDraw

# Open the image
im = Image.open('image.png')

# Make a list of the annotation texts
words = ['the', 'cat', 'sat', 'on', 'the', 'mat']

# Iterate over all annotations
for word in words:
    # Take a clean copy of original image - the following line is the actual answer
    clear = im.copy()

    # Draw the text on the clean copy and save
    draw = ImageDraw.Draw(clear)
    draw.text((10,10), word)
    clear.save(word   '.png')
  

Комментарии:

1. Работает. Похоже, моя проблема при использовании этого подхода заключалась в том, что я использовал глобальный экземпляр вместо самой копии. Спасибо!