estoy tratando de crear y guardar una imagen en miniatura al guardar la imagen original del usuario en el modelo userProfile
en mi proyecto, a continuación es mi código:¿Por qué la miniatura PIL no cambia el tamaño correctamente?
def save(self, *args, **kwargs):
super(UserProfile, self).save(*args, **kwargs)
THUMB_SIZE = 45, 45
image = Image.open(join(MEDIA_ROOT, self.headshot.name))
fn, ext = os.path.splitext(self.headshot.name)
image.thumbnail(THUMB_SIZE, Image.ANTIALIAS)
thumb_fn = fn + '-thumb' + ext
tf = NamedTemporaryFile()
image.save(tf.name, 'JPEG')
self.headshot_thumb.save(thumb_fn, File(open(tf.name)), save=False)
tf.close()
super(UserProfile, self).save(*args, **kwargs)
Cada cosa está funcionando bien, sólo una cosa.
El problema es que la función de miniaturas solo establece el ancho a 45
y no cambia el aspecto de relación de la imagen, así que obtengo una imagen de 45*35
para la que estoy probando (imagen corta).
¿Alguien puede decirme qué estoy haciendo mal? ¿Cómo forzar la relación de aspecto que quiero?
P.S .: He intentado todos los métodos para el tamaño: tupal: THUMB_SIZE = (45, 45)
e ingresando los tamaños directamente a la función de miniatura también.
Otra pregunta: ¿cuál es la deferencia entre el tamaño y las funciones de miniatura en PIL? ¿Cuándo usar el tamaño y cuándo usar la miniatura?
Ver http://www.pythonware.com/library/pil/handbook/image.htm#Image.thumbnail – Exelian
bueno, voy a adjuntar los enlaces a mi respuesta =) – BFil
10x, pero también he intentado image.resize (THUMB_SIZE, Image.ANTIALIAS) donde THUMB_RESIZE es un tupal (THUMB_RESIZE = (45,45) y no está cambiando de tamaño ahora ... Cualquier cosa ¿más aquí? (eso es lo que leo en el enlace) ... Gracias :-) – Erez