我有一个 ipython 笔记本,其中包含来自本地驱动器的嵌入式图像。我期待它与代码单元的输出一起嵌入到 JSON 中,但是当我分发笔记本时,用户看不到图像。将图像嵌入笔记本中的推荐方法是什么,以便在用户重新运行代码单元、清除单元输出等时它不会消失?
笔记本系统缓存包含在 中的图像
,但它们仅持续到为笔记本提供服务的 python“内核”重新启动。如果我重命名磁盘上的图像文件,我可以关闭并重新打开笔记本,它仍然显示图像;但是当我重新启动内核时它消失了。
编辑:如果我生成一个图像作为代码单元输出,然后将笔记本导出为 html,则该图像作为编码数据嵌入到 html 中。当然必须有一种方法可以连接到此功能并将输出加载到降价(或更好的“原始 nbconvert”)单元中?
from IPython.display import Image
Image(filename='imagename.png')
将被导出(使用ipython nbconvert
)到包含以下内容的 html:
<div class="output_png output_subarea output_execute_result">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnAAAAFgCAYAAAA...
</div>
但是,即使我手动将此代码段嵌入到降价单元格中,我也无法显示图像。我究竟做错了什么?
更新 (2020)
显然,这个问题(终于!)在较新的笔记本/Jupyter 版本中得到了解决:截至2018 年(感谢@Wayne 的链接),html sanitizer 将接受嵌入的 html 图像,如<img src="data:image/png;base64,iV...>
. Markdown 图像语法也接受图像作为嵌入数据,因此有两种方法可以做到这一点。这些有用的答案中的详细信息: