ローカルマシンまたはWebリソースから、画像または画像をjupyterノートブックに埋め込むにはどうすればよいですか?


304

ジュピターノートに画像を入れたいのですが。

私が次のことをした場合、それはうまくいきます:

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

しかし、私はマークダウンセルに画像を含めたいと思います。次のコードは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

回答:


306

マークダウンでは、画像ファイルの名前を引用符で囲まないでください。

エラーメッセージを注意深く読む%22と、リンクに2つの部分が表示されます。これは、htmlエンコードされた引用符です。

行を変更する必要があります

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

![title](img/picture.png)

更新

次のファイル構造jupyter notebookがあり、ファイルexample.ipynb(<-にはイメージのマークダウンが含まれています)が格納されているディレクトリでコマンドを実行することが前提となっています 。

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

8
私にとって、これはノートブックをhtmlとしてダウンロードするときに機能しません。壊れた画像リンクが表示されます。使用IPython.display.Imageは期待どおりに機能します。
joelostblom

7
@cheflo上記の構文で、htmlファイルに画像を埋め込みません。htmlファイルのソースコードを見ると、<img src = "img / picture.png" alt = "title">のようなエントリがあります。画像を表示するimgには、htmlファイルの相対フォルダーにコピーする必要があります。
セバスチャンスティグラー2016

1
はっきりさせてくれてありがとう。この2つのアプローチの違いは予想外であり、少なくとも私はどちらを選択するかを決定したので、注目したいと思いました。
joelostblom 2016

3
マークダウンを使用して、画像ファイルがノートブックと同じディレクトリにあることを確認します。奇妙な理由で(私の場合)、jupyter-notebookがフルパスで動作することを確信していません... ![title](picture.png)
Arun Kumar Khattri

2
@ArunKumarKhattri-同じ問題があり、ノートブックへのリレティブパスのみが機能した-私の場合:![title](../ img / picture.png)
ohad edelstain

210

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

またはマークダウン経由:

  • セルがコードダウンセルではなく、マークダウンセルであることを確認してください。コメントの@游凯超に感謝します)
  • 一部のシステムでは、マークダウンでファイル名に空白を使用できないことに注意してください。コメントの@CoffeeTableEspressoと@zebralamyに感謝します)
    (macosでは、マークダウンセルにいる限り、次のようにします:![title](../image 1.png)空白の心配はありません)。

Web画像の場合:

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

これらの引用符のいずれかを使用しないように注意を払う@cristianmtrで示すように、""または、それらの''URLの周りを。

またはローカルのもの:

![title](img/picture.png)

@Sebastianによって示される


画像のサイズを変更できる可能性は興味深いです。しかし、将来のレンダリングでは、markdownの方が適しています。
Ger

3
マークダウン経由で、絶対パスを持つローカルパスを置くことができますか?試しましたがうまくいきません。編集:Firefox(およびChrome)は、セキュリティのためにローカルファイルへのアクセスを許可していません
CiprianTomoiagăOct

2
@SwimBikeRunでは、正しいセルタイプを選択する必要があります。現在のセルタイプはコードで
youkaichao 2018

1
過小評価された答え。非常に徹底
Nathan


57

または、プレーンHTMLを使用することもできます<img src>。これにより、高さと幅を変更でき、マークダウンインタープリターによって引き続き読み取られます。

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

3
すごい!私たちは出力サイズを制御できるので、私はこの答えをはるかに好みます!これは、ペリカンツールを使用してジュピターノートブックを静的なHTMLページとして公開する場合などに重要です。
2016年

7
HTMLではコンマは必要ありません。属性の間にスペースを入れるだけwidth="60"です。たとえば、すべての属性値を引用符で囲むことをお勧めします。
colllin 2018年

聖なる* これはすごいです
Tessaracter '30

はい、それは素晴らしいです:)しかし... ...画像はPDFバージョンで失われます。残念な。
バブー

21

これは完全に関連しているわけではないことは知っていますが、「Jupyterで画像の表示方法」を検索すると、この回答が何度も上位に表示されるため、この回答も検討してください。

次のように、matplotlibを使用して画像を表示できます。

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

19

ここでHTMLセルマジックオプションについて言及している人がいないことに驚いています。ドキュメントから(IPython、Jupyterでも同じ)

%% html

Render the cell as a block of HTML

19

HTMLを使用する他の回答に加えて(Markdownまたは%%HTMLマジックを使用):

画像の高さを指定する必要がある場合、これは機能しません。

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

これは、JupyterのCSSスタイルheight: auto設定がデフォルトでimgタグに使用し、HTMLの高さ属性をオーバーライドするためです。height代わりに、CSS 属性を上書きする必要があります。

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

18

画像をJupyterノートブックに直接挿入します。

注:コンピューターにイメージのローカルコピーが必要です。

Jupyterノートブック自体に画像を挿入できます。これにより、画像をフォルダに個別に保存する必要がなくなります。

手順:

  1. セルを次のように変換markdownします。

    • 選択したセルでMキーを押す、
      または
    • メニューバーから、セル>セルタイプ>マークダウン。
      注:セルをMarkdownに変換することが重要です。そうしないと、ステップ2の[画像の挿入]オプションがアクティブになりません)
  2. 次に、メニューバーに移動し、[編集]-> [画像の挿入]を選択します。

  3. ディスクから画像を選択してアップロードします。

  4. Ctrl+ EnterまたはShift+を押しEnterます。

これにより、画像がノートブックの一部として作成され、ディレクトリやGithubにアップロードする必要がなくなります。これはよりきれいに見え、壊れたURLの問題が発生しにくいように感じます。


私を救った!、ありがとう
Mohammad Heydari

の開発者によって追加されたさらに別の便利な機能Jupyter。これが重要な場合の注意点として、1つ不利な点があります。それは、IPyNB Jasonコードにイメージを含めるため、イメージを非常に大きくし、コードリビジョンに適さない(たとえば、diffsを検査する場合)。
eldad-a

13

Markdownでこれを行う方法は次のとおりです。

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

1
何らかの理由で、markdownを使用した画像の表示が機能しません...構文が正しいcristianmtrですか?
Reblochon Masque

1
うん、ちょうどそれをもう一度テストしました。セルをマークダウンに設定してもよろしいですか?また、使用しているIPython / Jupyterのバージョンは何ですか?マインは言う:「ノートブックサーバーのバージョンは4.0.4で実行されています:Python 2.7.8(デフォルト、2014年6月30日、16:08:48)[MSC v.1500 64ビット(AMD64)]」結果のスクリーンショット:i.imgur.com/4ISJFDE.png
cristianmtr

パスに注意してください。ローカルで機能するものはオンラインでは機能しません。imgs \ pic.pngはローカルで動作しますが、オンラインでは1です:1大文字と小文字を区別します(Pic.png)2:バックスラッシュとスラッシュは同じではありません...:/ –
Intelligent-Infrastructure

Python 3.8でうまく動作します。ありがとう
jamescampbell

他の誰かがこの問題に
遭遇

12
  1. セルモードをマークダウンに設定します
  2. 画像をセルにドラッグアンドドロップします。次のコマンドが作成されます。

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

  1. セルを実行/実行すると、画像が表示されます。

画像は実際にはipynb Notebookに埋め込まれており、個別のファイルをいじる必要はありません。残念ながら、これはまだJupyter-Lab(v 1.1.4)では動作しません。

編集:JupyterLabバージョン1.2.6で動作します


1
はい、HTML埋め込みとしてダウンロードしたいのですが、「nbconvert failed:missing attachment:imagen.png」というエラーが表示されます。なぜ?
efueyo

クリップボードから画像を貼り付けることもできます(セルモードをに設定した後Markdown
CgodLEY

10

Jupyter Notebook API(IPythonのAPIではなく)を使用したい場合は、ipywidgets Jupyterのサブプロジェクトを見つけます。Imageウィジェットがあります。Docstring valueは、バイトであるパラメーターがあることを指定します。だからあなたはできる:

import requests
from ipywidgets import Image

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

私は同意します、Markdownスタイルを使用する方が簡単です。ただし、画像表示ノートブックAPIが表示されます。パラメータwidthheightパラメータを使用して、画像のサイズを変更することもできます。


その間、オプションvalueはに名前が変更さdataれたようです。ローカルに保存された画像の場合、コードImage(data=open(filename_png, 'rb').read())は私のために働いた。
jottbe

7

JupyterPython3のソリューションは次のとおりです。

という名前のフォルダに画像をドロップしましたImageTest。私のディレクトリは:

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

画像を表示するには、次の式を使用しました。

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

また、に注意/し、\


これは私のためだけにうまくいきます。ありがとう!「ShowMyImage」は魅力のように動作します!
プランツェル、

4

これはマークダウンセルで機能します。どういうわけか、それが画像なのか単純なファイルなのか、特に言及する必要はありません。

![](files/picture.png)

それはセバスチャン・スティグラーの答えとどう違うのですか?
iNet

1
角かっこ内にタイトルを含めなくても機能することを強調したかっただけです。何も変わらない。
Pranav Pandit

2

私が見つけた1つのことは、あなたの画像のパスは、ノートブックが最初にロードされた場所からの相対パスでなければならないということです。ピクチャなどの別のディレクトリにcdした場合、Markdownパスは元のロードディレクトリに対して相対的です。


0

同意しました、私は同じ問題を抱えていましたが、これはうまくいったことと、うまくいかなかったことです:

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

0

上記の回答の多くは、ファイルまたはPythonコードを使用して画像を埋め込む方法を提供しますが、markdownとbase64のみを使用してjupyterノートブック自体に画像を埋め込む方法があります。

ブラウザで画像を表示するにdata:image/png;base64,**image data here**は、base64でエンコードされたPNG画像のリンクにアクセスするか、data:image/jpg;base64,**image data here** base64でエンコードされたJPG画像。リンクの例は、この回答の最後にあります。

これをマークダウンページに埋め込むには、ファイルの回答と同様の構成を使用しますが、代わりにbase64リンクを使用します![**description**](data:image/**type**;base64,**base64 data**)。これで画像がJupyter Notebookファイルに100%埋め込まれました。

リンクの例: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==

マークダウンの例: ![smile](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.