Nelson Minar <nelson@...45...> writes:
> matplotlib is great, particularly the image quality. I'm using
> matplotlib to generate images in a webapp and have run into a problem.
> How do I get it to give me the rendered image bytes in a string rather
> than writing the image to a file?FigureCanvasAgg has the undocumented methods buffer_rgba,
tostring_argb, and tostring_rgb, which might help here.> The docs for FigureCanvasAgg.print_figure() says that if the filename
> is actually a file object then it will write the bytes to that file
> object. This works great if I pass in sys.stdout, but as soon as I try
> to use a StringIO() instance to capture the bytes in Python I get an
> error:
[...]
> TypeError: Could not convert object to file pointerlibpng seems to require an actual file pointer. This was discussed in
http://thread.gmane.org/gmane.comp.python.matplotlib.general/3118/
libpng does not require a file pointer. It can write to streams (or
StringIO objects) too. Cairo uses libpng to write to streams, and
PyCairo uses cairo (and libpng) to write to file-like objects (like
StringIO), so it is possible. But I don't know the details, the
technique is buried somewhere in the cairo and libpng C code.
Steve
Send instant messages to your online friends http://au.messenger.yahoo.com