Jupyter notebook 将图像嵌入jupyter笔记本并导出为HTML

Jupyter notebook 将图像嵌入jupyter笔记本并导出为HTML,jupyter-notebook,jupyter,Jupyter Notebook,Jupyter,我正在Windows上使用pycharm运行Python 3.7。我有一个jupyter笔记本,我想在笔记本中嵌入一个图像。我知道使用markdown语言进行标准嵌入的所有方法,但理想情况下我想要的是: a。通过标记语言嵌入图像,即笔记本电池处于“标记”状态,而不是“代码”状态,并且 b。使其能够导出为HTML并将该图像保留在HTML文件中。i、 在笔记本上。我想单击文件->下载为->HTML(.HTML),将笔记本文件保存为.HTML格式,然后当我将其发送给好友时,我附加的图像在笔记本中,他看

我正在Windows上使用pycharm运行Python 3.7。我有一个jupyter笔记本,我想在笔记本中嵌入一个图像。我知道使用markdown语言进行标准嵌入的所有方法,但理想情况下我想要的是:

a。通过标记语言嵌入图像,即笔记本电池处于“标记”状态,而不是“代码”状态,并且

b。使其能够导出为HTML并将该图像保留在HTML文件中。i、 在笔记本上。我想单击文件->下载为->HTML(.HTML),将笔记本文件保存为.HTML格式,然后当我将其发送给好友时,我附加的图像在笔记本中,他看到了它

我知道我可以在一个单元格(“代码”)中执行此操作:

但我不想使用“Code”,因为当我发送给我的好友时,他会看到[]Code语句中的,以及笔记本html文件中图像的Out[]


注意:这将是我的笔记本电脑上的图像,我希望在html格式的导出笔记本电脑中使用该图像。它不在web上,他可以用www类型语句引用它。除非我疯了,否则在单元格中使用markdown命令是无法做到这一点的,唯一的方法(将图像“永久”嵌入到笔记本的.html格式中)是通过“代码”单元格类型中的单元格来实现的。

当您使用代码单元格显示图像,然后将笔记本导出到html文件时,图像转换为Base64,代码直接用于

  • 计算单元格,您应该已经看到您的图像

  • 如果现在将笔记本导出为HTML,则图像应以与代码单元格中图像相同的方式包含在文件中


    这种方法的唯一缺点是,您的markdown单元格被Base64代码(可能很长)弄得乱七八糟。但是,这是可以管理的,例如使用专门用于图像的降价单元格,而不使用其他内容。

    我的完整解决方案基于Milania和

    代码

    <img src="data:image/png;base64,CODE_FOLLOWS_HERE" />
    
    导入base64、io、IPython
    从PIL将图像导入为PIL图像
    image=PILImage.open(图像路径)
    输出=io.BytesIO()
    image.save(输出,格式='PNG')
    encoded_string=base64.b64encode(output.getvalue()).decode()
    html=''.format(编码字符串)
    IPython.display.HTML(HTML)
    
    您可以安装

    它有一些有趣的扩展(例如拼写检查、可折叠标题等)。其中一个扩展就是它完全满足您的需求

    要使用
    pip
    安装Nbextensions,请执行以下操作:

        import base64, io, IPython
        from PIL import Image as PILImage
    
        image = PILImage.open(image_path)
    
        output = io.BytesIO()
        image.save(output, format='PNG')
        encoded_string = base64.b64encode(output.getvalue()).decode()
    
        html = '<img src="data:image/png;base64,{}"/>'.format(encoded_string)
        IPython.display.HTML(html)
    
    然后,您将在Jupyter主页中看到一个新选项卡(
    Nbextensions
    ),您可以在其中启用和配置不同的扩展


    启用“使用嵌入图像导出HTML”后,您将在“文件下载为”菜单中看到相应的选项

    此外,您还可以在最终引号符号和
    />
    之前添加类似“style=”max width:150%;width:150%”的内容,以使图像显示大于当前默认单元格区域,并在必要时使用滚动条。(基于。)选项为“导出嵌入式HTML”。。。与其他两个答案相比,这个答案是最简单的。
        import base64, io, IPython
        from PIL import Image as PILImage
    
        image = PILImage.open(image_path)
    
        output = io.BytesIO()
        image.save(output, format='PNG')
        encoded_string = base64.b64encode(output.getvalue()).decode()
    
        html = '<img src="data:image/png;base64,{}"/>'.format(encoded_string)
        IPython.display.HTML(html)
    
    $ pip install jupyter_contrib_nbextensions
    $ pip install jupyter_nbextensions_configurator
    $ jupyter contrib nbextension install --user 
    $ jupyter nbextensions_configurator enable --user