如何从本地机器或网络资源将图像或图片嵌入到 jupyter notebook 中?

How to embed image or picture in jupyter notebook, either from a local machine or from a web resource?

我想在 jupyter notebook 中包含图像。

如果我执行以下操作,它会起作用:

from IPython.display import Image
Image("img/picture.png")

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

![title]("img/picture.png")

我也试过了

![texte]("http://localhost:8888/img/picture.png")

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

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

在 Jupyter notebooks 中 post 图像有几种方法:

通过HTML:

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

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

Image(url= "http://my_site.com/my_picture.jpg", width=100, height=100)

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

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

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

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

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

或通过降价:

  • 确保单元格是markdown单元格,而不是代码单元格,感谢评论中的@游凯超)
  • 请注意,在某些系统上,Markdown 不允许在文件名中使用白色 space。感谢评论中的@CoffeeTableEspresso 和@zebralamy)
    (在 macOS 上,只要你在降价单元格上,你就会这样做:![title](../image 1.png),不用担心白色 space)。

网络图片:

![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)

如@cristianmtr所示 注意不要在 url.

周围使用这些引号 ""''

或本地的:

![title](img/picture.png)

由@Sebastian 展示

以下是使用 Markdown 的方法:

![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)

Markdown 中的图片文件名不能用引号引起来!

如果您仔细阅读错误消息,您会在 link 中看到两个 %22 部分。那就是 html 编码的引号。

你必须换行

![title]("img/picture.png")

![title](img/picture.png)

更新

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

/
+-- example.ipynb
+-- img
    +-- picture.png

如果您想使用 Jupyter Notebook API(不再是 IPython),我找到了 ipywidgets Jupyter 的 sub-project。您有一个 Image 小部件。 Docstring 指定您有一个 value 参数,它是一个字节。所以你可以这样做:

import requests
from ipywidgets import Image

Image(value=requests.get('https://octodex.github.com/images/yaktocat.png').content)

同意,使用Markdown风格更简单。但它向您显示图像显示笔记本 API。您还可以使用 widthheight 参数调整图像大小。

这是 JupyterPython3:

的解决方案

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

C:\Users\MyPcName\ImageTest\image.png

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

![title](/notebooks/ImageTest/image.png "ShowMyImage")

还要注意 /\

或者,你可以使用普通的 HTML <img src>,它允许你改变高度和宽度,并且仍然被 markdown 解释器读取:

<img src="subdirectory/MyImage.png" width=60 height=60 />

我很惊讶这里没有人提到 html 细胞魔法选项。 来自 docs(IPython,但 Jupyter 相同)

%%html

Render the cell as a block of HTML

这在降价单元格中对我有用。不知何故,我不需要特别提及它是图像还是简单文件。

![](files/picture.png)

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

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

<img src="image.png" height=50> <-- will not work

这是因为 Jupyter 中的 CSS 样式默认使用 height: auto 作为 img 标签,它会覆盖 HTML 高度属性。您需要改写 CSS height 属性:

<img src="image.png" style="height:50px"> <-- works

我知道这并不完全相关,但由于当您搜索“如何在 Jupyter 中显示图像”时,此答案多次排名第一,请将此答案视为出色地。

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

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
image = mpimg.imread("your_image.png")
plt.imshow(image)
plt.show()

我发现的一件事是您的图像路径必须与笔记本最初加载的位置相关。如果你 cd 到不同的目录,比如 Pictures 你的 Markdown 路径仍然是相对于原始加载目录。

直接在 Jupyter notebook 中插入图像。

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

您可以在 Jupyter notebook 本身中插入图像。这样就不需要把图片单独放在文件夹里了。

步骤:

  1. 通过以下方式将单元格转换为 markdown

    • 在 selected 单元格上按 M

    • 从菜单栏中,单元格 > 单元格类型 > Markdown。
      注意: 将单元格转换为 Markdown 很重要,否则步骤 2 中的 "Insert Image" 选项将不会激活)
  2. 现在转到菜单栏 select 编辑 -> 插入图像。

  3. Select 从您的磁盘上传图片。

  4. Ctrl+回车Shift+输入.

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

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

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

  1. Execute/Run 显示单元格和图像。

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

编辑:适用于 JupyterLab 版本 1.2.6

同意,我遇到了同样的问题,这是有效的,无效的:

WORKED: <img src="Docs/pinoutDOIT32devkitv1.png" width="800"/>
*DOES NOT WORK: <img src="/Docs/pinoutDOIT32devkitv1.png" width="800"/>
DOES NOT WORK: <img src="./Docs/pinoutDOIT32devkitv1.png" width="800"/>*

虽然上面的很多答案都提供了使用文件或 Python 代码嵌入图像的方法,但有一种方法可以仅使用 markdown 和 base64 将图像嵌入到 jupyter notebook 中!

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

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

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

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

我假设您的意思是在 jupyter 笔记本内的降价单元格中。如果是这样,以下是两者最简单的方法:

来自本地计算机:

使用您的文件浏览器,导航到包含您的图片的目录。然后,将其拖放到要嵌入图片的单元格中。它必须已经处于降价模式,否则什么也不会发生。

这样做的优点是:

  • 很简单,只需拖放即可

这样做的缺点:

  • 不能复制并粘贴 link,并在任何其他单元格中使用它。如果你想在任何其他笔记本单元格中使用相同的图片,你需要找到图片,再次拖放到单元格中。

  • 如果您打算在笔记本中使用大量图片,您应该考虑一个允许您再次查找图片的文件管理方案。

这是一种行之有效的方法,对我有用。

来自网络:

最简单的方法是使用网络浏览器找到一张图片,右键单击并“复制图片”,将其粘贴到要显示图片的单元格中。

如上所述,这确实有一些注意事项,因为您不能复制它并 link 并将其粘贴到另一个单元格中。因此,如果您打算再次使用该图像,则必须将其粘贴到另一个单元格,或者将此图像保存在本地。

图像嵌入在笔记本中,因此可以在打开笔记本的任何地方使用。

出于某种原因,没有其他解决方案适合我。这是什么工作:

  1. 将单元格更改为 markdown
  2. 复制过去:
<div>
<img src="attachment:name.png" width="600"/>
</div>
  1. 在同一单元格中的 </div> 之后创建一个空行,然后使用鼠标将图像拖放到该行中。
  2. 你会看到类似的东西:
<div>
<img src="attachment:name.png" width="600"/>
</div>
![yourname.jpg](attachment:yourname.jpg)
  1. 复制 yourname.jpg 并通过它而不是 name.png
  2. 删除 ![yourname.jpg](attachment:yourname.jpg).
  3. 最终结果应如下所示:
<div>
<img src="attachment:yourname.jpg" width="600"/>
</div>
  1. 运行 卖出(shift+enter),你将得到你的形象

插入本地存在的图像

快速解决方案:观看此视频 (1:36) https://www.youtube.com/watch?v=Vw1EZh1My8s


简而言之:

  1. 转到您的 .ipynb 所在的位置。
  2. 创建名为 images 的文件夹,然后将要插入到 jupyter 中的图像粘贴到该图像文件夹中
  3. 在浏览器中打开 .ipynb 文件并点击单元格并输入:
  4. 有一个下拉按钮被称为代码。将其更改为 Markdown
  5. 欢呼!!现在 运行 通过点击 shift + Enter
  6. 的代码

参考图片