[IPython-dev] [Notebook 1.0.0] Display two png images side by side

Francesco Montesano franz.bergesund at gmail.com
Mon Sep 2 11:14:05 EDT 2013


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/5635f4ef/attachment.html>


More information about the IPython-dev mailing list