如何从jupyter笔记本中嵌入图像或图片,无论是从本地计算机还是从Web资源?

Ger*_*Ger 262 python image jupyter jupyter-notebook

我想在jupyter笔记本中包含图像.

如果我做了以下,它的工作原理:

from IPython.display import Image
Image("img/picture.png")
Run Code Online (Sandbox Code Playgroud)

但我想将图像包含在markdown单元格中,以下代码给出了404错误:

![title]("img/picture.png")
Run Code Online (Sandbox Code Playgroud)

我也试过了

![texte]("http://localhost:8888/img/picture.png")
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误:

404 GET /notebooks/%22/home/user/folder/img/picture.png%22 (127.0.0.1) 2.74ms referer=http://localhost:8888/notebooks/notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

Seb*_*ler 266

在markdown中,您不得在图像文件的名称周围使用引号!

如果您仔细阅读了错误消息,您将%22在链接中看到这两部分.这是html编码的引号.

你必须改变这条线

![title]("img/picture.png")
Run Code Online (Sandbox Code Playgroud)

![title](img/picture.png)
Run Code Online (Sandbox Code Playgroud)

UPDATE

假设您具有以下文件结构,并且您jupyter notebook在存储文件example.ipynb(< - 包含图像的标记)的目录中运行 命令:

/
+-- example.ipynb
+-- img
    +-- picture.png
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,这在将笔记本下载为html时不起作用.它显示了一个破碎的图像链接.使用`IPython.display.Image`按预期工作. (7认同)
  • @cheflo上面的语法**没有在html文件中嵌入**图像.如果你查看html文件的源代码,你会发现像<img rel="nofollow noreferrer" src ="img/picture.png"alt ="title">这样的条目.要查看图片,您必须将其复制到文件夹`img` relativ到html文件. (7认同)
  • 通过markdown进行操作时,请确保图像文件位于笔记本计算机所在的目录中,出于某些奇怪的原因(在我的情况下),jupyter-notebook未被说服使用完整路径...`![title]( picture.png)` (2认同)
  • @ArunKumarKhattri - 有同样的问题,只有笔记本的相关路径 - 在我的情况下:![title](../ img/picture.png) (2认同)

Reb*_*que 185

有几种方法可以在Jupyter笔记本中发布图像:

通过HTML:

from IPython.display import Image
from IPython.core.display import HTML 
Image(url= "http://my_site.com/my_picture.jpg")
Run Code Online (Sandbox Code Playgroud)

您保留使用HTML标记调整大小等的能力......

Image(url= "http://my_site.com/my_picture.jpg", width=100, height=100)
Run Code Online (Sandbox Code Playgroud)

您还可以通过相对路径或绝对路径显示本地存储的图像.

PATH = "/Users/reblochonMasque/Documents/Drawings/"
Image(filename = PATH + "My_picture.jpg", width=100, height=100)
Run Code Online (Sandbox Code Playgroud)

如果图像比显示设置宽: 谢谢

用于unconfined=True禁用图像的最大宽度限制

from IPython.core.display import Image, display
display(Image('https://i.ytimg.com/vi/j22DmsZEv30/maxresdefault.jpg', width=1900, unconfined=True))
Run Code Online (Sandbox Code Playgroud)

或通过降价:

(确保单元格是markdown单元格,而不是代码单元格,感谢@游凯超在评论中)

对于网络图像:

![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
Run Code Online (Sandbox Code Playgroud)

如@cristianmtr所示注意不要使用这些引号""''网址周围的引号.

或当地的:

![title](img/picture.png)
Run Code Online (Sandbox Code Playgroud)

由@Sebastian演示

  • 你可以通过降价来放置一个绝对路径的本地路径吗?我试过但似乎没有用.编辑:Firefox(和Chrome)不允许访问本地文件以确保安全性 (2认同)
  • @SwimBikeRun 您应该选择正确的单元格类型。您当前的单元格类型必须是 **code** (2认同)
  • 被低估的答案。非常彻底 (2认同)

小智 53

或者,您可以使用纯HTML <img src>,它允许您更改高度和宽度,并仍由降价解释器读取:

<img src="subdirectory/MyImage.png",width=60,height=60>
Run Code Online (Sandbox Code Playgroud)

  • HTML不需要逗号 - 只需在属性之间放置一个空格 - 并且建议在所有属性值周围加上引号,例如`width ="60"`. (6认同)
  • 大!我更喜欢这个答案,因为我们可以控制输出尺寸!这很重要,例如当使用pelican工具将jupyter笔记本发布为静态html页面时. (3认同)

Pet*_*ter 21

  1. 将单元格模式设置为 Markdown
  2. 将图像拖放到单元格中。将创建以下命令:

![image.png](attachment:image.png)

  1. 执行/运行单元格并显示图像。

该图像实际上嵌入在 ipynb Notebook 中,您无需处理单独的文件。不幸的是,这不适用于 Jupyter-Lab (v 1.1.4)。

编辑:适用于 JupyterLab 1.2.6 版

  • 是的,当我想下载为 HTML 嵌入时,我收到错误“nbconvert 失败:缺少附件:imagen.png”。为什么? (2认同)

Mal*_*umi 17

我很惊讶这里没有人提到过html cell magic选项.来自文档(IPython,但Jupyter也一样)

%% HTML

Render the cell as a block of HTML
Run Code Online (Sandbox Code Playgroud)


小智 17

除了使用HTML的其他答案(在Markdown中或使用%%HTML魔术:

如果您需要指定图像高度,这将不起作用:

<img src="image.png" height=50> <-- will not work
Run Code Online (Sandbox Code Playgroud)

这是因为Jupyter中的CSS样式使用标签的height: auto每个默认值img,这会覆盖HTML height属性.您需要覆盖CSS height属性:

<img src="image.png" style="height:50px"> <-- works
Run Code Online (Sandbox Code Playgroud)


cod*_*ord 11

我知道这并不完全相关,但是由于当您搜索“ 如何在Jupyter中显示图像 ”时,此答案在很多时候都排名第一,因此也请考虑此答案。

您可以使用matplotlib如下显示图像。

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
image = mpimg.imread("your_image.png")
plt.imshow(image)
plt.show()
Run Code Online (Sandbox Code Playgroud)


cri*_*mtr 10

以下是Markdown如何做到这一点:

![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)
Run Code Online (Sandbox Code Playgroud)


小智 10

如果你想使用Jupyter Notebook API(而不是IPython),我会找到ipywidgets Jupyter的子项目.你有一个Image小部件.Docstring指定您有一个value参数,它是一个字节.所以你可以这样做:

import requests
from ipywidgets import Image

Image(value=requests.get('https://octodex.github.com/images/yaktocat.png').content)
Run Code Online (Sandbox Code Playgroud)

我同意,使用Markdown风格更简单.但它会向您显示图像显示Notebook API.您还可以使用widthheight参数调整图像大小.

  • 如何为本地存储的图像工作? (2认同)

id0*_*d01 10

虽然上面的许多答案都给出了使用文件或 Python 代码嵌入图像的方法,但有一种方法可以仅使用 markdown 和 base64 将图像嵌入到 jupyter 笔记本本身中!

要在浏览器中查看图像,您可以访问data:image/png;base64,**image data here**Base64 编码的 PNG 图像或data:image/jpg;base64,**image data here**Base64 编码的 JPG 图像的链接。可以在本答案的末尾找到示例链接。

要将其嵌入到 Markdown 页面中,只需使用与文件答案类似的构造,但使用 Base64 链接:![**description**](data:image/**type**;base64,**base64 data**)。现在您的图像已 100% 嵌入到您的 Jupyter Notebook 文件中!

示例链接:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==

降价示例: ![smile](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==)


Bli*_*ide 6

这是JupyterPython3的解决方案:

我把我的图像放在一个名为的文件夹中ImageTest.我的目录是:

C:\Users\MyPcName\ImageTest\image.png
Run Code Online (Sandbox Code Playgroud)

为了显示图像我使用了这个表达式:

![title](/notebooks/ImageTest/image.png "ShowMyImage")
Run Code Online (Sandbox Code Playgroud)

还要注意/\


小智 6

将图像直接插入Jupyter笔记本中。

注意:您应该在计算机上拥有图像的本地副本

您可以将图像插入Jupyter笔记本本身。这样,您无需将图像单独保存在文件夹中。

脚步:

  1. 将单元格转换为markdown

    • 在所选单元格上按M

    • 在菜单栏中,单元格>单元格类型>降价。
      注意:将单元格转换为Markdown非常重要,否则,第2步中的“插入图片”选项将无效)
  2. 现在转到菜单栏,然后​​选择编辑->插入图像。

  3. 从磁盘中选择图像并上传。

  4. Ctrl+ EnterShift+ Enter

这将使图像成为笔记本的一部分,您无需在目录或Github中上传。我觉得这看起来更干净,而且不容易出现URL损坏的问题。