Вы можете использовать класс BytesIO
, чтобы получить оболочку для строк, которая ведет себя как файл. Объект BytesIO
предоставляет тот же интерфейс, что и файл, но сохраняет содержимое только в памяти:
import io
with io.BytesIO() as output:
image.save(output, format="GIF")
contents = output.getvalue()
Вы должны явно указать формат вывода с параметром format
, в противном случае PIL выдаст ошибку при попытке его автоматического определения.
Если вы загрузили изображение из файла, оно имеет параметр format
, который содержит исходный формат файла, поэтому в этом случае вы можете использовать format=image.format
.
В старых версиях Python 2 до появления модуля io
вы бы использовали модуль StringIO
.