[Python] Ottenere il bytestream di un immagine da PIL
Manlio Perillo
manlio_perillo a libero.it
Mer 3 Ott 2007 18:50:38 CEST
Luca ha scritto:
> Salve a tutti.
>
> Ho la necessità di caricare un'immagine PNG utilizzando PIL e
> modificarla leggermente.
>
> Una volta eseguita al modifica, se uso le funzioni di PIL per la
> generazione di una nuova immagine su filesystem le cose sono ok.
>
> Ciò che però devo veramente fare è inviare il bytestream dell'immagine
> tramite la la rete. Per fare questo non volevo salvare l'immagine su
> filesystem (dato che è temporanea) ma credevo di poterlo fare
> ottenendo il sorgente dell'immagine direttamente dall'oggetto Image.
>
> Purtroppo ciò che ottengo dall'uso di Image.tostring (unico metodo che
> pare fare al caso mio) è un bytestream estremamente più grande, e non
> comunque un'immagine corretta...
>
Hai letto la documentazione del metodo tostring?
http://www.pythonware.com/library/pil/handbook/image.htm
Senza parametri aggiuntivi dovrebbe restituire il contenuto RAW
dell'immagine.
Purtroppo nella documentazione non viene spiegato cosa passare come
"encoder", comunque una veloce ricerca fornisce:
http://mail.python.org/pipermail/image-sig/2004-September/002908.html
Prova a fare .tostring('jpeg') e vedi cosa succede.
Se non funziona salva l'immagine in un file temporaneo e, se usi WSGI,
usa l'estensione wsgi.file_wrapper, in modo che, se sei fortunato, viene
usato sendfile, in modo da evitare di copiare due volte il buffer tra
memoria <-> filesystem.
> [...]
Saluti Manlio Perillo
Maggiori informazioni sulla lista
Python