python – ¿Cómo convertir una imagen de PIL `a un archivo de Django?

Estoy tratando de convertir un archivo UploadedFile a un objeto de imagen PIL para verlo en miniatura, y luego convertir el objeto de imagen PIL que mi función de miniatura devuelve a un objeto File. ¿Cómo puedo hacer esto?
Mejor respuesta
La forma de hacer esto sin tener que escribir de nuevo en el sistema de archivos, y luego llevar el archivo a la memoria a través de una llamada abierta, es usar StringIO y Django InMemoryUploadedFile. Aquí hay una muestra rápida de cómo puedes hacer esto. Esto supone que ya tienes una imagen en miniatura llamada ‘pulgar’:

import StringIO

from django.core.files.uploadedfile import InMemoryUploadedFile

# Create a file-like object to write thumb data (thumb data previously created
# using PIL, and stored in variable 'thumb')
thumb_io = StringIO.StringIO()
thumb.save(thumb_io, format='JPEG')

# Create a new Django file-like object to be used in models as ImageField using
# InMemoryUploadedFile.  If you look at the source in Django, a
# SimpleUploadedFile is essentially instantiated similarly to what is shown here
thumb_file = InMemoryUploadedFile(thumb_io, None, 'foo.jpg', 'image/jpeg',
                                  thumb_io.len, None)

# Once you have a Django file-like object, you may assign it to your ImageField
# and save.
...

Déjame saber si necesitas más aclaraciones. Tengo esto trabajando en mi proyecto ahora mismo, subiendo a S3 usando django-storages. Esto me llevó la mejor parte del día para encontrar la solución aquí.

Por favor indique la dirección original:python – ¿Cómo convertir una imagen de PIL `a un archivo de Django? - Código de registro