Конвертировать изображение PIL в Cairo ImageSurface

Я пытаюсь создать cairo ImageSurface из образа PIL, код, который у меня есть, таков:

im = Image.open(filename)
imstr = im.tostring()
a = array.array('B', imstr)
height, width = im.size
stride = cairo.ImageSurface.format_stride_for_width(cairo.FORMAT_RGB24, width)
return cairo.ImageSurface.create_for_data(a, cairo.FORMAT_ARGB24, width, height, stride)

Но это дает мне

TypeError: buffer is not long enough.

Я действительно не понимаю, почему это так, возможно Я недостаточно хорошо разбираюсь в форматах изображений.

Я использую cairo 1.10.

5
задан Alex jg 30 September 2011 в 12:29
поделиться