[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