[reportlab-users] load Image() from embedded python

Michael Hipp michael at redmule.com
Sun Feb 9 10:10:40 EST 2014


I'm using Python 2.7.6 on windows. I tried both cStringIO and StringIO
with no luck. But the combo of ImageReader and getBytesIO works great.
Thank you.

Michael


On 2/9/2014 4:12 AM, Robin Becker wrote:

> Not sure if this is with python 2.7 or 3.3, but there are differences

> in the way StringIO works in the two dialects. In practice I think for

> any kind of image object we ought to be reading in binary so StringIO

> is off the table. Can you try passing an ImageReader instance to the

> canvas. That would look like

>

>

> from reportlab.lib.utils import ImageReader, getBytesIO

>

> .......

>

>

> canvas.drawImage(ImageReader(getBytesIO('embedded stuff')))

>

>

>

> ......

>

> ImageReader is acceptable to drawImage & a bytes io object is

> acceptable to ImageReader (I think).

>

> On 8 February 2014 17:54, Michael Hipp <michael at redmule.com> wrote:

>> As noted in my previous reply I was able to make this work great with the

>> flowable Image().

>>

>> Now I'm doing something like this, and getting the exception below. Any

>> suggestions?

>>

>> canvas.drawImage(StringIO('embedded stuff'), ...)

>>

>> I would be really helpful to be able to embed these things.

>>

>> I'm using reportlab 3.0a1 BTW.

>>

>> Thanks,

>> Michael

>>

>> File

>> "c:\dev\virtenvs\oldworldblack\lib\site-packages\reportlab\pdfgen\canvas.py",

>> line 920, in drawImage

>> imgObj = pdfdoc.PDFImageXObject(name, image, mask=mask)

>> File

>> "c:\dev\virtenvs\oldworldblack\lib\site-packages\reportlab\pdfbase\pdfdoc.py",

>> line 2086, in __init__

>> ext = os.path.splitext(source)[1].lower()

>> File "c:\dev\virtenvs\oldworldblack\lib\ntpath.py", line 190, in splitext

>> return genericpath._splitext(p, sep, altsep, extsep)

>> File "c:\dev\virtenvs\oldworldblack\lib\genericpath.py", line 91, in

>> _splitext

>> sepIndex = p.rfind(sep)

>> AttributeError: StringIO instance has no attribute 'rfind'

>>

>>

>>

>>

>> On 1/29/2014 1:47 AM, Andy Robinson wrote:

>>>

>>> I think that everywhere we accept a filename, we also accept a

>>> file-like object. So you could store it as some kind of escaped

>>> binary string in your source code, then wrap it in a StringIO and pass

>>> that to the platypus Image.

>>>

>>> I'm not in a programming environment now but if this is not clear we

>>> can post a code snippet later in the day...

>>>

>>> - Andy

>>>

>>>

>>>

>>> On 29 January 2014 00:50, Michael Hipp <michael at redmule.com> wrote:

>>>>

>>>> In the reportlab.platypus Image flowable, is it possible to load the

>>>> image

>>>> from an image embedded as binary in the python code? The only api for

>>>> Image

>>>> seems to depend on a filename.

>>>>

>>>> I'd prefer not to have to lug around things like logos and icons with my

>>>> program.

>>>>

>>>> Thanks,

>>>> Michael

>>>> _______________________________________________

>>>> reportlab-users mailing list

>>>> reportlab-users at lists2.reportlab.com

>>>> http://two.pairlist.net/mailman/listinfo/reportlab-users

>>>

>>>

>>>

>>

>> _______________________________________________

>> reportlab-users mailing list

>> reportlab-users at lists2.reportlab.com

>> http://two.pairlist.net/mailman/listinfo/reportlab-users

>

>

>




More information about the reportlab-users mailing list