Python Pillow: сделать прогрессивное изображение перед отправкой на сторонний сервер

У меня есть изображение, которое я загружаю с помощью Django Forms, и его доступное в переменной как InMemoryFile Я хочу сделать это прогрессивным.

Код, чтобы сделать изображение прогрессивным

 img = Image.open(source) img.save(destination, "JPEG", quality=80, optimize=True, progressive=True) 

Forms.py

 my_file = pic.pic_url.file photo = uploader.upload_picture_to_album(title=title, file_obj=my_file) 

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

Я просто хочу знать, есть ли способ сделать изображение прогрессивным, которое не сохраняет изображение физически на диске, а в памяти, и я могу использовать существующий код для его загрузки?

идея

Ищете что-то подобное.

  my_file=pic.pic_url.file progressive_file = (my_file) photo = picasa_api.upload_picture_to_album(title=title, file_obj=progressive_file) 

Если все, что вы хотите, не сохраняет промежуточный файл на диск, вы можете сохранить его в StringIO . И PIL.open() и PIL.save() принимают файловые объекты, а также имена файлов.

 img = Image.open(source) progressive_img = StringIO() img.save(progressive_img, "JPEG", quality=80, optimize=True, progressive=True) photo = uploader.upload_picture_to_album(title=title, file_obj=progressive_img) 

Пользователю необходимо поддерживать работу с StringIO но это, надеюсь, так и будет.

Вероятно, можно напрямую передать результат из save() с помощью соответствующих сопрограмм, но это немного больше.