[reportlab-users] load Image() from embedded python
Robin Becker
robin at reportlab.com
Sun Feb 9 13:06:57 EST 2014
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
More information about the reportlab-users
mailing list