2012-01-11 21 views
12

Il problema è caricare l'immagine codificata jpeg dalla memoria.Python Imaging: carica jpeg dalla memoria

I ricevere una stringa da presa:

jpgdata = self.rfile.read(sz) 

e so che questa immagine jpeg-codificato è.

Ho bisogno di decodificarlo. La soluzione più stupida è:

o = open("Output/1.jpg","wb") 
o.write(jpgdata) 
o.close() 
dt = Image.open("Output/1.jpg") 

La domanda è: come fare la stessa cosa in memoria?

risposta

15

L'oggetto PIL di Image.open accetta qualsiasi oggetto simile a file. Ciò significa che si può avvolgere i dati di immagine su un oggetto StringIO, e passarlo al Image.Open

from cStringIO import StringIO 
file_jpgdata = StringIO(jpgdata) 
dt = Image.open(file_jpgdata) 

Oppure, provate solo di passaggio self.rfile come argomento a Image.open - potrebbe funzionare altrettanto bene. (Questo è per Python 2 - per Python 3 usare from io import BytesIO)

0

Utilizzare StringIO in modo che Image possa accedere ai dati come se si trattasse di un file.

Problemi correlati