Dim*_*ims 3 python html-table image pillow jupyter-notebook
我想在表格中显示图像样本和一些相关的文本信息。
在jupyter笔记本中可以这样做吗?
我尝试混合pandas
和PIL
,但是没有用:
import pandas as pd
d = {
'band1': data.to_images(band_1[random_indices]),
'band2': data.to_images(band_2[random_indices]),
'is_iceberg': is_iceberg[random_indices]
}
pd.DataFrame(data=d)
Run Code Online (Sandbox Code Playgroud)
输出是
即它显示的__str__
是图像,而不是图像本身。
如何克服?
这个怎么样?
我敢肯定,设置escape
在to_html
是安全上的风险可能,但如果你知道的数据,并知道它是未来从它希望没有那么糟糕。如果更改escape
为True
它,将无法正常工作,因为html被熊猫转义了。这样每行都设置相同的图像,但是可以轻松调整。
from IPython.core.display import display, HTML
import pandas as pd
data = pd.DataFrame({"A":[1,2,3,4,5], "B":[10,20,30,40,50]})
data.loc[:,'img'] = '<img src="Pictures/Capture.PNG" alt="img">'
display(HTML(data.to_html(escape=False)))
Run Code Online (Sandbox Code Playgroud)
[编辑]更好的选择是
from IPython.core.display import display, HTML
from PIL import Image
import cStringIO
import base64
import pandas as pd
img = Image.open("Pictures/Capture.PNG")
img_buffer = cStringIO.StringIO()
img.save(img_buffer, format="PNG")
imgStr = base64.b64encode(img_buffer.getvalue())
data = pd.DataFrame({"A":[1,2,3,4,5], "B":[10,20,30,40,50]})
data.loc[:,'img'] = '<img src="data:image/png;base64,{0:s}">'
html_all = data.to_html(escape=False).format(imgStr)
display(HTML(html_all))
Run Code Online (Sandbox Code Playgroud)