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

Andy Robinson andy at reportlab.com
Sun Feb 9 13:38:28 EST 2014


We'd better make sure we get this right in the docs...

On 9 February 2014 18:06, Robin Becker <robin at reportlab.com> wrote:

> Yes I thing you can pass either an ImageReader or a filename, but not

> a file like object into drawImage.

>

> On 9 February 2014 15:10, Michael Hipp <michael at redmule.com> wrote:

>> 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

>>>

>>>

>>>

>>>

>>

>> _______________________________________________

>> reportlab-users mailing list

>> reportlab-users at lists2.reportlab.com

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

>

>

>

> --

> Robin Becker

> _______________________________________________

> reportlab-users mailing list

> reportlab-users at lists2.reportlab.com

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




--
Andy Robinson
Managing Director
ReportLab Europe Ltd.
Thornton House, Thornton Road, Wimbledon, London SW19 4NG, UK
Tel +44-20-8405-6420


More information about the reportlab-users mailing list