Tengo un problema extraño con PIL no cambiar el tamaño de la imagen.PIL Image.resize() no cambiar el tamaño de la imagen
def handle_uploaded_image(i, u):
# resize image
from PIL import Image
img = Image.open(i)
if img.mode not in ('L', 'RGB'):
img = img.convert('RGB')
width, height = img.size
if width == height:
img.thumbnail(settings.THUMB_SIZE, Image.ANTIALIAS)
elif width > height:
ratio = floor(width/height)
newwidth = ratio * 150
newwidthhalf = floor(newwidth/2)
img.resize((newwidth, 150), Image.ANTIALIAS)
box = 1
img.crop((newwidthhalf, 0, 150, 150))
elif height > width:
ratio = floor(height/width)
newheight = ratio * 150
newheighthalf = floor(newheight/2)
img.resize((150, newheight), image.ANTIALIAS)
box = 1
img.crop((0, newheighthalf, 150, 150))
path = '/'.join([settings.MEDIA_ROOT, 'users', u.username, 'mugshotv2.jpg'])
img.save(path, format='JPEG')
Este código se ejecuta sin errores y me produce una imagen llamada mugshotv2.jpg en la carpeta correcta, pero no cambiar su tamaño. Le hace algo, porque el tamaño de la imagen cae de 120 kb a 20 kb, pero las dimensiones siguen siendo las mismas.
Quizás también pueda sugerir formas de recortar imágenes en cuadrados con menos código. Creo que Image.thumbnail lo hace, pero lo que hizo fue escalar mi imagen a 150 px por su ancho, dejando una altura de 100 px.
Alan.
Gracias! Eso fue todo. Este fue nuevamente un error de este tipo estúpido y fácil, que a menudo hago: P. Viéndolo de nuevo no puedo entender cómo no lo entendí yo mismo, estaba en los malditos documentos después de todo. Creo que necesito ir a la cama. Gracias de nuevo y probar ese ImageOps.fit otro día: D –
@Zayatzz, así que acepte la respuesta de @ Nadia, ya que ha resuelto su problema _y_ incluso ha proporcionado asesoramiento sobre enfoques aún mejores! –
Ah ... esa extraña marca de verificación ... ohwell. podría usar algo para llamar más la atención sobre él. –