[cairo] unable to make PIL work with cairo
Andrea Canciani
ranma42 at gmail.com
Sat Jan 8 10:37:30 PST 2011
On Sat, Jan 8, 2011 at 5:09 PM, wecing <w3cing at gmail.com> wrote:
> Currently i'm writing a video player which uses cairo to draw subtitle on
> each frame.
> I successfully extracted all the frames as PIL Image objects, but I failed
> to create cairo surfaces with that.
> I refered to http://cairographics.org/pythoncairopil/ , but it seems that
> maybe there're some problems in the document.
> Here is the traceback:
> File "main.py", line 96, in video_observer
> img.get_data(), 'raw', 'RGBA', 0, 1)
> File "/usr/lib/python2.6/dist-packages/PIL/Image.py", line 512, in
> __getattr__
> raise AttributeError(name)
> AttributeError: get_data
It looks like you're trying to use the get_data() member of a PIL
image (but it doesn't exist). get_data() is a member of cairo images,
but to access PIL images raw data you might need something like:
data = pil_image.tostring("raw","RGBA",0,1)
or (if the format is already correct), just:
data = pil_image.getdata() # (no underscore between "get" and "data").
See http://www.pythonware.com/library/pil/handbook/image.htm and
http://cairographics.org/documentation/pycairo/2/reference/surfaces.html#class-imagesurface-surface
for reference.
Andrea
More information about the cairo
mailing list