2011-01-07 15 views
9

In particolare, voglio cambiare il tipo di file di un'immagine caricata attraverso un Django ImageField.Come posso creare un'immagine PIL da un file in memoria?

Il mio pensiero attuale è quello di creare un campo immagine personalizzato e sovrascrivere il metodo di salvataggio per manipolare il file.

Ho problemi a ottenere un file in memoria su perché un'istanza di PIL Image.

Grazie per l'aiuto.

risposta

11

noti che Django di ImageField eredita il metodo open da FieldFile. Ciò restituisce un oggetto stream che può essere passato a Image.open del PIL (il metodo standard di fabbrica per la creazione di Image oggetti da un flusso di immagini):

stream = imagefield.open() 
image = Image.open(stream) 
stream.close() 
# ... and then save image with: image.save(outfile, format, options) 

Vedi PIL Image documentation.

+1

L'ho capito. Grazie. – Zach

+0

'stream.close()' farà il dump del riferimento al file? Se volessi fare 'stream.thumbnail (200x200, 'png')' come dovrei gestire 'stream.close()'? – tutuca

+1

ritorna aperto 'Nessuno' qui http://dpaste.de/HqFCF/ ... – tutuca

Problemi correlati