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

如果执行以下操作,则它可以工作:

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


#1 楼

在markdown中,请勿在图像文件的名称周围使用引号!

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

您必须更改行

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




![title](img/picture.png)


UPDATE

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

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


评论


对我来说,以html格式下载笔记本时,这不起作用。它显示了损坏的图像链接。使用IPython.display.Image可以正常工作。

– joelostblom
16-2-9在23:54

@cheflo上面的语法不会将图像嵌入html文件中。如果您查看html文件的源代码,则会找到类似“标题”的条目。要查看图片,您必须将其复制到img相对文件夹中到html文件中。

–塞巴斯蒂安·斯蒂格勒(Sebastian Stigler)
16-2-15在8:46



我怀疑情况就是如此,感谢您的澄清。我认为这两种方法之间的差异是出乎意料的,至少对于我来说,确定了选择哪种方法,因此我想引起注意。

– joelostblom
16-2-15在18:30



通过markdown进行操作时,请确保图像文件位于笔记本计算机所在的目录中,出于某些奇怪的原因(以我为例),jupyter-notebook未被说服在完整路径上起作用...![title](picture .png)

–阿伦·库马尔·哈特里(Arun Kumar Khattri)
16 Jun 16'在4:46



@ArunKumarKhattri-有相同的问题,只有笔记本的重复路径有效-就我而言:![title](../ img / picture.png)

–ohad edelstain
17年8月16日在6:28



#2 楼

有几种方法可以在Jupyter笔记本中发布图像:
通过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)

如果图像的宽度大于显示设置:谢谢
使用unconfined=True禁用最大宽度限制图片
from IPython.core.display import Image, display
display(Image('https://i.ytimg.com/vi/j22DmsZEv30/maxresdefault.jpg', width=1900, unconfined=True))

或通过markdown:


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

用于网络图像:
![Image of Yaktocat](https://octodex.github.com/images/yaktocat.png)

,如@cristianmtr所示。
请注意不要使用这些引号""或URL周围的那些''
或本地的:
![title](img/picture.png)

由@Sebastian演示

评论


的确,调整图片大小的可能性很有趣。但是对于将来的渲染,降价对我来说更好。

– Ger
2015年9月3日在8:54



您可以通过markdown放置具有绝对路径的本地路径吗?我试过了,但似乎没有用。编辑:Firefox(和Chrome)不允许访问本地文件以确保安全

–西门人Tomoiagă
17-10-19在12:03



@SwimBikeRun,您应该选择正确的单元格类型。您当前的单元格类型必须是代码

–youkaichao
18年7月31日在13:00

被低估的答案。很彻底

–内森(Nathan)
19年7月2日在19:07

markdown版本不允许文件名中的空格,对于遇到此问题的任何人

–CoffeeTableEspresso
20年4月13日,0:37

#3 楼

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

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


评论


大!我非常喜欢这个答案,因为我们可以控制输出大小!例如,在使用pelican工具将jupyter笔记本发布为静态html页面时,这一点很重要。

–斯文
16-10-19在6:32

HTML不需要逗号-只需在属性之间放置一个空格-建议您在所有属性值周围加上引号,例如width =“ 60”。

–科林
18 Mar 1 '18 at 21:29



神圣的这太棒了

– Dheeraj M Pai
18年8月30日在11:41

是的,它很棒:),但是...该图像在PDF版本中丢失。太糟糕了。

–babou
20年6月9日在21:42

#4 楼

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

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

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

步骤:



将单元格转换为markdown的方法是:


在选定单元格上按M
OR


从菜单栏中,单元格>单元格类型>减价。
(注意:将单元格转换为Markdown很重要,否则第2步中的“插入图片”选项将无效)


现在转到菜单栏并选择编辑->插入图像。
从磁盘中选择图像并上传。
按Ctrl + Enter或Shift + Enter。

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

评论


救了我!,谢谢

–穆罕默德·海达里(Mohammad Heydari)
19/12/30在7:53

Jupyter开发人员添加的另一个有用功能。要注意的一个不利条件是:在此情况下,该图像将包含在IPyNB Jason代码中,从而使其变得更大,并且不便于代码修订(例如,检查差异时)。

–eldad-a
20年4月30日在4:21

#5 楼

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

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

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


#6 楼

我很惊讶这里没有人提到html单元魔术选项。
来自文档(IPython,但与Jupyter相同)


%% html

Render the cell as a block of HTML



#7 楼

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

如果需要指定图像高度,则将无法使用:

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


那是因为Jupyter中的CSS样式默认为height: auto标签使用img标记,它覆盖了HTML height属性,您需要改写CSS height属性:

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


#8 楼


将单元格模式设置为Markdown

将图像拖放到单元格中。将创建以下命令:

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


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

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

编辑:在JupyterLab 1.2.6版中可用

评论


是的,当我想下载HTML时,我得到了错误“ nbconvert失败:缺少附件:imagen.png”。为什么?

–efueyo
20-2-17在12:10



从剪贴板粘贴图像对我也适用(将单元格模式设置为Markdown后)

– CgodLEY
20年4月13日在16:37

#9 楼

使用Markdown的方法如下:

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


评论


由于某些原因,通过markdown显示图像对我不起作用...您确定语法正确cristianmtr吗?

– Reblochon面膜
2015年9月3日在8:36

是的,再次测试一下。您确定将单元格设置为Markdown吗?另外,您正在使用哪个版本的IPython / Jupyter? Mine说:“笔记本电脑服务器的版本是4.0.4,并且正在运行:Python 2.7.8(默认值,2014年6月30日,16:08:48)[MSC v.1500 64位(AMD64)]”这是一个结果的屏幕截图:i.imgur.com/4ISJFDE.png

–cristianmtr
2015年9月3日在8:42

当心路径,本地有效不能在线工作,.e。 imgs \ pic.png在本地工作,在线则为1:区分大小写(Pic.png)2:后退和斜杠不同...:/ –

–智能基础设施
19年2月18日在13:53

在Python 3.8中效果很好。谢谢

–詹姆斯·坎贝尔
20年4月1日在18:20

如果其他人遇到此问题,则在文件名中不允许使用空格作为降价标记

–CoffeeTableEspresso
20年4月13日在0:38

#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)
 


我同意,使用Markdown样式更简单。但是它向您显示了图像显示Notebook API。您还可以使用widthheight参数调整图像的大小。

评论


同时似乎选项值已重命名为数据。对于本地存储的图像,代码Image(data = open(filename_png,'rb')。read())为我工作。

– jottbe
19-10-3在21:30

#11 楼

这是Jupyter和Python3的解决方案:

我将图像拖放到名为ImageTest的文件夹中。
我的目录是:

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


为了显示图像,我使用了以下表达式:

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


还要注意/\

评论


这仅对我有效。谢谢! “ ShowMyImage”的工作原理很吸引人!

–普兰策尔
19/12/17在7:07

#12 楼

这在降价单元中对我有用。无论如何,如果图像或简单文件,我都无需特别提及。

![](files/picture.png)


评论


与塞巴斯蒂安·斯蒂格勒的答案有何不同?

– M.Innat
18年8月16日在19:42

只是想强调一下它对我有用,而没有在方括号中包含标题。没什么

–普拉纳夫·潘迪特(Pranav Pandit)
18年9月7日在18:03

#13 楼

我发现的一件事是,图像的路径必须相对于笔记本最初加载的位置。如果您将CD转到其他目录,例如“图片”,则Markdown路径仍相对于原始加载目录。

#14 楼

尽管上面的许多答案都提供了使用文件或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==)

#15 楼

同意,我遇到了同样的问题,这是行得通的,而行不通的是:

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"/>*