Ho qualche strano problema con PIL che non ridimensiona l'immagine.PIL Image.resize() non ridimensionando l'immagine
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')
Questo codice viene eseguito senza errori e mi produce un'immagine denominata mugshotv2.jpg nella cartella giusta, ma non ridimensionarla. Fa qualcosa, perché la dimensione dell'immagine scende da 120 kb a 20 kb, ma le dimensioni rimangono le stesse.
Forse si può anche suggerire un modo per ritagliare le immagini in quadrati con meno codice. Ho pensato che Image.thumbnail lo facesse, ma quello che ha fatto è stato ridimensionare la mia immagine a 150 px per la sua larghezza, lasciando 100px di altezza.
Alan.
Grazie! Era così. Questo era ancora un errore di questo tipo stupido e facile, che spesso faccio: P. Guardandolo di nuovo, non riesco a capire come non l'ho capito da solo - era in fondo maledettamente doc. Penso di aver bisogno di andare a letto. Grazie ancora e prova che ImageOps.fit qualche altro giorno: D –
@Zayatzz, quindi accetta la risposta @ Nadia, già, dal momento che ha risolto il tuo problema _e_ anche fornito consigli su approcci ancora migliori! –
Ah .. quello strano segno di spunta .... ohwell. potrebbe usare qualcosa per attirare più attenzione su di esso. –