Image Python: charger jpeg à partir de la mémoire
le problème est de charger l'image encodée jpeg depuis la mémoire.
je reçois une chaîne de socket:
jpgdata = self.rfile.read(sz)
et je sais que c'est une image encodée en jpeg.
j'ai besoin de le décoder. La solution la plus stupide est:
o = open("Output/1.jpg","wb")
o.write(jpgdata)
o.close()
dt = Image.open("Output/1.jpg")
La question est de savoir comment faire la même chose en mémoire?
15
demandé sur
user1038085
2012-01-11 18:50:01
2 réponses
Image de PIL.ouvrir l'objet accepte n'importe quel fichier comme objet. Cela signifie que vous pouvez envelopper vos données D'Image sur un objet StringIO, et les passer à L'Image.Ouvrir
from cStringIO import StringIO
file_jpgdata = StringIO(jpgdata)
dt = Image.open(file_jpgdata)
Ou, essayez juste de passage self.rfile
comme argument à L'Image.elle pourrait fonctionner tout aussi bien. (C'est - à-dire pour Python 2-pour Python 3 utiliser from io import BytesIO
)
21
répondu
jsbueno
2016-11-24 15:59:01
utilisez StringIO pour que Image puisse accéder à vos données comme s'il s'agissait d'un fichier.
0
répondu
Scott Hunter
2012-01-11 14:53:50