comment faire pour enregistrer un pylab figure dans la mémoire de fichier qui peut être lu dans une image de PIL?
nouveau à PIL, mais vous voulez obtenir une solution rapide hors de lui. Ce qui suit est mon premier coup de feu qui ne fonctionne jamais:
import cStringIO
import pylab
from PIL import Image
pylab.figure()
pylab.plot([1,2])
pylab.title("test")
buffer = cStringIO.StringIO()
pylab.savefig(buffer, format='png')
im = Image.open(buffer.read())
buffer.close()
le message d'erreur indique,
Traceback (most recent call last):
File "try.py", line 10, in <module>
im = Image.open(buffer.read())
File "/awesomepath/python2.7/site-packages/PIL/Image.py", line 1952, in open
fp = __builtin__.open(fp, "rb")
des idées? Je ne veux pas la solution pour impliquer les paquets supplémentaires, merci.
Vous devez vous connecter pour publier un commentaire.
N'oubliez pas d'appeler
buf.seek(0)
doncImage.open(buf)
commence la lecture à partir de ladébut de la
buf
:io.BytesIO
avec mon originalStringIO
. Pouvez-vous vous rappeler ce pourquoi vous choisissez d'utiliser l'ancien ici? Merci!io.BytesIO
au lieu decStringIO.StringIO
pour la compatibilité. En Python3, lecStringIO
,StringIO
modules sont partis. Leur fonctionnalité est tous dans leio
module.fig.png
- grâce.BytesIO
objet. Aucun fichier n'est créé. Plus généralement, l'utilisationsavefig
est d'appelerplt.savefig('/path/to/anyfilenameyouwant.png')
, qui permet de spécifier le nom de fichier.PIL
/pillow
et l'utilisationim = plt.imread(buf)
. Vous pouvez également enregistrer leim
tableau à l'aide deplt.imsave('/path/to/saved/file.png', im)
.