[IPython-dev] [Notebook 1.0.0] Display two png images side by side
Francesco Montesano
franz.bergesund at gmail.com
Mon Sep 2 11:15:40 EDT 2013
[ps: Sent by error]
So it's complaining about trying to concatenate a string and a 'bytes'
object
Do you know if/how to solve it?
Fra
2013/9/2 Francesco Montesano <franz.bergesund at gmail.com>
> Dear Zoltan,
>
> I've split the line with the append
>
> fig_base64 = base64.b64encode(f.read()) # this works: so file
> read and encoded without problems
> full_html = 'data:image/png;base64,' + fig_base64 #
> error TypeError: Can't convert 'bytes' object to str implicitly
> pngs.append(full_html)
>
> Now if I try to print(fig_base64) before the second line I get:
>
> TypeError: Can't convert 'bytes' object to str implicitly
>
> b'iVBORw0KGgoAAAANS
>
>
>
>
>
>
> 2013/9/2 Zoltán Vörös <zvoros at gmail.com>
>
>>
>> Hi Francesco,
>>
>>
>> import base64
>> pngs = []
>> for fn in images: # loop over the input file names
>> with open(fn, "rb") as f:
>> pngs.append('data:image/png;base64,' +
>> base64.b64encode(f.read()))
>>
>> But I get the following error: on the last line:
>> TypeError: Can't convert 'bytes' object to str implicitly
>>
>> Is there a way to disable table lines in HTML?
>>
>> From this, it seems to me that you encounter the problem on the
>> png-to-base64 conversion. Is that correct? Because afterwards the image is
>> encoded in base64, so it's not binary anymore, and I don't see why html
>> should fail at that point. But if it is an error in b64encode, then you
>> probably don't have a valid input file.
>>
>> Cheers,
>> Zoltán
>>
>>
>>
>> 2013/9/2 Zoltán Vörös <zvoros at gmail.com>
>>
>>> Hi Francesco,
>>>
>>> It might be a hack, but this works:
>>>
>>> with open("roche1.png", "rb") as image_file:
>>> im1 = 'data:image/png;base64,' + base64.b64encode(image_file.read())
>>>
>>> with open("roche2.png", "rb") as image_file:
>>> im2 = 'data:image/png;base64,' + base64.b64encode(image_file.read())
>>>
>>> s = """<table>
>>> <tr>
>>> <th><img src="%s"/></th>
>>> <th><img src="%s"/></th>
>>> </tr></table>"""%(im1, im2)
>>> t=HTML(s)
>>> display(t)
>>>
>>>
>>> Cheers,
>>> Zoltán
>>>
>>>
>>> On 02/09/13 15:32, Francesco Montesano wrote:
>>>
>>> Dear List,
>>>
>>> I have a script that produces some image and I'm creating a notebook
>>> for testing/logging.
>>>
>>> For comparison reasons, I would like to load to images in a cell and
>>> show them side by side.
>>>
>>> from IPython.display import Image
>>> constr = Image(filename="fig1.png")
>>> sigma = Image(filename="fig2.png")
>>> display(constr, sigma)
>>>
>>>
>>> put the figures one after the other. I've tried to play with the width
>>> keyword, but that does not help.
>>>
>>> Making an HTML table with the output of "Image" does not work (I don't
>>> know if I should add "of course")
>>>
>>> s = """<table>
>>> <tr>
>>> <th>{f1}</th>
>>> <th>{f2}</th>
>>> </tr>""".format(f1=constr, f2=sigma)
>>> t=HTML(s)
>>> display(t)
>>>
>>> Is there any way to do what I want directly in the notebook? (I guess
>>> that there is some python library to do it, but I think that the notebook
>>> should be able to do it)
>>>
>>> Cheers,
>>>
>>> Fra
>>>
>>>
>>> _______________________________________________
>>> IPython-dev mailing listIPython-dev at scipy.orghttp://mail.scipy.org/mailman/listinfo/ipython-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> IPython-dev mailing list
>>> IPython-dev at scipy.org
>>> http://mail.scipy.org/mailman/listinfo/ipython-dev
>>>
>>>
>>
>>
>> _______________________________________________
>> IPython-dev mailing listIPython-dev at scipy.orghttp://mail.scipy.org/mailman/listinfo/ipython-dev
>>
>>
>>
>> _______________________________________________
>> IPython-dev mailing list
>> IPython-dev at scipy.org
>> http://mail.scipy.org/mailman/listinfo/ipython-dev
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ipython-dev/attachments/20130902/6e8a2b82/attachment.html>
More information about the IPython-dev
mailing list