Похоже, я путал закрытие файла изображения с .close(), уничтожающим данные изображения. Память не должна быть проблемой, а правильное закрытие файла.
При открытии изображения в Python с использованием библиотеки подушек PIL предположим, что изображение не содержит нескольких кадров с (например, простым «jpeg»), а затем вызовите для него .load():
Код: Выделить всё
from PIL import Image
image = Image.open("some path")
image.load()
Код: Выделить всё
image = "some other thing"
# or
del image
В документации указано:
Предлагаемая обработка файлов
Код: Выделить всё
Image.Image.load()несколько кадров.
Код: Выделить всё
Image.Image.seek()Пользователям библиотеки следует использовать контекстный менеджер или вызывать
Код: Выделить всё
Image.Image.close(), чтобы гарантировать, что базовый файл закрыт.
РЕДАКТИРОВАТЬ:
В нем говорится, что .load() должен закрывать файл, пока он содержит один кадр.
Поэтому я предполагаю, что это означает, что .close() не нужно вызывать, если не используется контекстный менеджер, изображение состоит только из одного кадра и .load() был вызван.
Но большинство примеров, которые я видел, все равно вызывают .close(). Вот почему я в замешательстве.