<div>Thanks.</div><div> </div><div>In case it helps anybody, the following ended up being the fastest and most direct method that I could work out.</div><div>Nonetheless, the conversion from rgb to bgra is quite slow(150ms on my single core 2.9Ghz machine) and should be done in &#39;C&#39;.</div>
<div>I tried Cython with no signifcant improvement.</div><div> </div><div>img = Image.open(fn)    <br> l = [struct.pack(&#39;BBBB&#39;, b, g, r, 0xFF) for (r,g,b) in img.getdata()]<br>s = string.join(l, &#39;&#39;)<br>self.img = array.array(&#39;B&#39;, s)<br>
stride = cairo.ImageSurface.format_stride_for_width(cairo.FORMAT_ARGB32, self.width())<br>self.img_surface = cairo.ImageSurface.create_for_data (self.img, cairo.FORMAT_ARGB32, self.width(), self.height(), stride)</div><div>
<br><br> </div><div class="gmail_quote">On Sat, Jan 7, 2012 at 1:20 AM, Vicky Tux <span dir="ltr">&lt;<a href="mailto:ssseintr2@gmail.com">ssseintr2@gmail.com</a>&gt;</span> wrote:<br><blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">
<br> As per my understanding there is no jpeg image decoder in cairo. only png surfaces were supported.<div>-vicky<br><div class="gmail_quote"><blockquote style="margin:0px 0px 0px 0.8ex;padding-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-left-style:solid" class="gmail_quote">

<br>
<br></blockquote></div></div></blockquote></div>