将JPG图像添加到大叶弹出框 [英] Adding JPG Images to folium popup

查看:107
本文介绍了将JPG图像添加到大叶弹出框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试将图像添加到大叶弹出窗口,但是失败了.我使用的是python 2.7版和folium 0.50版.

I try to add an image to folium popup, but failed. I use python 2.7 version, and folium 0.50 version.

实际上,我遵循了其他线程中提到的页面,但仍然无法正常工作

Actually, I follow the page mention in other threads, but it still doesn't work

http://nbviewer.jupyter.org/gist/ocefpaf/0ec5c93138744e5072847822818b4362

import folium

import base64

m = folium.Map(location = [33, -97], zoom_start = 6, tiles = "Mapbox Bright")

encoded = base64.b64encode(open('IMG_1769.JPG', 'rb').read()).decode()

html = '<img src="data:image/jpeg;base64,{}">'.format

iframe = folium.IFrame(html(encoded), width=632+20, height=420+20)

popup = folium.Popup(iframe, max_width=2650)

marker = folium.Marker([30,-100], popup=popup).add_to(m)

m.add_child(marker)

m.save("test.html")

推荐答案

我关注了此例子,它(几乎)对我有用.由于encoded变量是字节数组而不是字符串,因此无法正确进行 base64解码,从而生成了 b'iVBOR 标头,而不是 iVBOR 标头(PNG标头的base64版本).

I've followed this example and it (almost) worked for me. Plots were not base64-decoded correctly because the encoded variable was a byte array instead of a string, thus producing a b'iVBOR header instead of a iVBOR header (the base64 version of the PNG header).

html(encoded)替换为html(encoded.decode('UTF-8'))可以解决此问题.

Replacing html(encoded) to html(encoded.decode('UTF-8')) fixed the problem.

这是输出.

这是代码段.

    fig, ax = plt.subplots(figsize=(width, height))
    ax = subdf.plot(x='date', y='temperature', ax=ax, legend=False)
    ax.set_ylabel('Temp (°C)')
    png = '/tmp/temperatures_{}.png'.format(counter)
    fig.savefig(png, dpi=resolution)

    encoded = base64.b64encode(open(png, 'rb').read())



    html = '<img src="data:image/png;base64,{}">'.format
    #print(20*'-',encoded.decode('UTF-8'))
    iframe = IFrame(html(encoded.decode('UTF-8')), width=(width*resolution)+20, height=(height*resolution)+20)
    popup = folium.Popup(iframe, max_width=2650)

    icon = folium.Icon(color="red", icon="ok")
    marker = folium.Marker([lat, lon], popup=popup, icon=icon)
    marker.add_to(marker_cluster)

这篇关于将JPG图像添加到大叶弹出框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆