In Django, è possibile modificare (ridimensionare) l'immagine caricata prima che venga salvata sul disco? Preferirei farlo senza usare app aggiuntive.Immagine di ridimensionamento di Django durante il caricamento
risposta
ero infastidito dal fatto che non riuscivo a trovare un esempio di lavoro completo, solo pezzi qua e là. Sono riuscito a mettere insieme la soluzione da solo. Ecco l'esempio completo, l'ho inserito nel metodo clean() del modulo (puoi anche sovrascrivere il metodo save(), nello stesso modo - cambiando la proprietà del file di ImageField).
import StringIO
from PIL import Image
image_field = self.cleaned_data.get('image_field')
image_file = StringIO.StringIO(image_field.read())
image = Image.open(image_file)
w, h = image.size
image = image.resize((w/2, h/2), Image.ANTIALIAS)
image_file = StringIO.StringIO()
image.save(image_file, 'JPEG', quality=90)
image_field.file = image_file
Grazie per questo esempio, ma non capisco tutto ... Che cos'è "info"? Altrimenti, in python 3.x è io.StringIO (...) – HydrUra
È possibile utilizzare PIL e ridimensionare l'immagine nel metodo YourModel.save().
Esempi:
http://djangosaur.tumblr.com/post/422589280/django-resize-thumbnail-image-pil
http://davedash.com/2009/02/21/resizing-image-on-upload-in-django/
Hai un esempio di codice? – johndoevodka
Sì, aggiunto nel mio post :) – Efrin
+1 per suggerire PIL – Amyth
[Che cosa hai provato?] (Http://whathaveyoutried.com) – arulmr
Utilizzare PIL per il lavoro: http://stackoverflow.com/questions/273946/how-do-i-resize-an -image-using-pil-and-maintain-its-aspect-ratio –
è necessario utilizzare una libreria esterna o un'app per raggiungere questo obiettivo poiché django non ha metodi predefiniti per ciò che si sta cercando di fare. – Amyth