Come incorporare l'immagine o l'immagine nel quaderno jupyter, da un computer locale o da una risorsa Web?


304

Vorrei includere l'immagine in un quaderno jupyter.

Se ho fatto quanto segue, funziona:

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

Ma vorrei includere le immagini in una cella di markdown e il codice seguente restituisce un errore 404:

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

Ho anche provato

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

Ma ottengo ancora lo stesso errore:

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

Risposte:


306

Non è necessario utilizzare le virgolette attorno al nome dei file di immagine in markdown!

Se leggi attentamente il tuo messaggio di errore, vedrai le due %22parti nel link. Questa è la virgoletta codificata HTML.

Devi cambiare la linea

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

per

![title](img/picture.png)

AGGIORNARE

Si presume che si disponga della seguente struttura di file e che si esegua il jupyter notebookcomando nella directory in cui example.ipynbè memorizzato il file (<- contiene il markdown per l'immagine):

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

8
Per me, questo non funziona quando si scarica il notebook come html. Mostra un collegamento di immagine interrotto. L'uso IPython.display.Imagefunziona come previsto.
Joelostblom,

7
@cheflo La sintassi sopra non incorpora l'immagine nel file html. Se guardi il codice sorgente del file html, troverai una voce come <img src = "img / picture.png" alt = "title">. Per vedere l'immagine devi copiarla nella cartella relativa imgal file html.
Sebastian Stigler,

1
Sospettavo che fosse così, grazie per il chiarimento. Ho pensato che questa differenza tra i due approcci fosse inaspettata e, almeno per me, ho deciso quale scegliere, quindi ho voluto attirare l'attenzione su di essa.
Joelostblom,

3
mentre lo fai tramite markdown, assicurati che il file di immagine sia nella stessa directory in cui si trova il tuo notebook, per qualche strana ragione (nel mio caso), jupyter-notebook non era convinto di agire sul percorso completo ... ![title](picture.png)
Arun Kumar Khattri

2
@ArunKumarKhattri - ha avuto lo stesso problema, ha funzionato solo il percorso di recupero del notebook - nel mio caso
:!

210

Esistono diversi modi per pubblicare un'immagine nei blocchi note Jupyter:

via HTML:

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

Hai la possibilità di utilizzare i tag HTML per ridimensionare, ecc ...

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

È inoltre possibile visualizzare le immagini memorizzate localmente, tramite percorso relativo o assoluto.

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

se l'immagine è più ampia delle impostazioni di visualizzazione: grazie

usare unconfined=Trueper disabilitare il confinamento di larghezza massima dell'immagine

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

o tramite markdown:

  • assicurati che la cella sia una cella di markdown e non una cella di codice, grazie @ 游 凯 超 nei commenti)
  • Si noti che su alcuni sistemi, il markdown non consente spazi bianchi nei nomi dei file. Grazie a @CoffeeTableEspresso e @zebralamy nei commenti)
    (Su macos, finché sei su una cella di markdown faresti così: ![title](../image 1.png)e non preoccuparti dello spazio bianco).

per un'immagine web:

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

come mostrato da @cristianmtr Prestando attenzione a non utilizzare queste citazioni ""o quelle ''intorno all'URL.

o locale:

![title](img/picture.png)

dimostrato da @Sebastian


È vero che la possibilità di ridimensionare l'immagine è interessante. Ma per il rendering futuro, markdown è meglio per me.
Ger,

3
puoi metterne uno locale con percorso assoluto, tramite markdown? ci ho provato ma non sembra funzionare. Modifica: Firefox (e Chrome) non consentono l'accesso ai file locali per
motivi di

2
@SwimBikeRun dovresti selezionare il tipo di cella giusto. il tipo di cella corrente deve essere il codice
youkaichao

1
Risposta sottovalutata. Molto accurato
Nathan,

1
la versione markdown non consente spazi nei nomi dei file, per chiunque si imbatta in quel problema
CoffeeTableEspresso

58

In alternativa, puoi usare un semplice HTML <img src>, che ti permette di cambiare altezza e larghezza e viene comunque letto dall'interprete markdown:

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

3
Grande! Preferisco di gran lunga questa risposta poiché abbiamo il controllo sulla dimensione dell'output! Questo è importante, ad esempio, quando si utilizza lo strumento pellicano per pubblicare il quaderno jupyter come pagine html statiche.
Svend,

7
L'HTML non ha bisogno di virgole - basta inserire uno spazio tra i tuoi attributi - ed è consigliabile mettere le virgolette attorno a tutti i valori degli attributi, ad es width="60".
Colllin

Holy sh * t. Questo è fantastico
Tessaracter il

Sì, è fantastico :) ma ... l'immagine viene persa nelle versioni PDF. Peccato.
babou,

21

So che questo non è pienamente pertinente, ma poiché questa risposta viene classificata per prima molte volte quando si cerca " come visualizzare immagini in Jupyter ", si prega di considerare anche questa risposta.

È possibile utilizzare matplotlib per mostrare un'immagine come segue.

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

19

Sono sorpreso che nessuno qui abbia menzionato l'opzione di magia cellulare html. dai documenti (IPython, ma lo stesso per Jupyter)

%% html

Render the cell as a block of HTML

19

Oltre alle altre risposte usando HTML (in Markdown o usando la %%HTMLmagia:

Se è necessario specificare l'altezza dell'immagine, questo non funzionerà:

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

Questo perché usa lo stile CSS in Jupyter height: auto per impostazione predefinita per i imgtag, che sovrascrive l'attributo HTML height. È invece necessario sovrascrivere l' heightattributo CSS :

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

19

Inserisci l'immagine direttamente nel quaderno Jupyter.

Nota: è necessario disporre di una copia locale dell'immagine sul computer

È possibile inserire l'immagine nel taccuino Jupyter stesso. In questo modo non è necessario mantenere l'immagine separatamente nella cartella.

passi:

  1. Converti la cella in markdownda:

    • premendo M sulla cella selezionata
      O
    • Dalla barra dei menu, Cella> Tipo di cella> Markdown.
      ( Nota: è importante convertire la cella in Markdown, altrimenti l'opzione "Inserisci immagine" al passaggio 2 non sarà attiva)
  2. Ora vai alla barra dei menu e seleziona Modifica -> Inserisci immagine.

  3. Seleziona l'immagine dal tuo disco e carica.

  4. Premi Ctrl+ Entero Shift+Enter .

Questo renderà l'immagine come parte del notebook e non è necessario caricarla nella directory o in Github. Ritengo che questo appaia più pulito e non soggetto a problemi di URL non funzionanti.


Salvami! Grazie
Mohammad Heydari il

Ancora un'altra utile funzionalità aggiunta dagli sviluppatori di Jupyter. Uno svantaggio da notare, per i casi in cui ciò è importante: includerebbe l'immagine nel IPyNB Jasoncodice, rendendola così molto più grande e non adatta alla revisione del codice (ad es. Durante l'ispezione diff).
eldad-a

13

Ecco come puoi farlo con Markdown:

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

1
Per alcuni motivi, la visualizzazione delle immagini tramite markdown non funziona per me ... Sei sicuro che la sintassi sia corretta cristianmtr?
Reblochon Masque,

1
Sì, l'ho appena testato di nuovo. Sei sicuro di aver impostato la cella su Markdown? Inoltre, quale versione di IPython / Jupyter stai usando? Il mio dice: "La versione del server notebook è 4.0.4 ed è in esecuzione su: Python 2.7.8 (impostazione predefinita, 30 giugno 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)]" Ecco un screenshot con i risultati: i.imgur.com/4ISJFDE.png
cristianmtr

attenzione ai percorsi, ciò che funziona localmente non funziona online, .e. imgs \ pic.png funziona localmente, mentre online è 1: case sensitve (Pic.png) 2: backslach e slash non sono gli stessi ...: / -
Intelligent-Infrastructure

Funziona alla grande in Python 3.8. Grazie
jamescampbell

Non sono ammessi spazi nel nome file per il markdown, nel caso in cui qualcun altro si imbattesse in questo problema
CoffeeTableEspresso

12
  1. Imposta la modalità cella su Markdown
  2. Trascina e rilascia l'immagine nella cella. Verrà creato il seguente comando:

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

  1. Esegui / Esegui la cella e l'immagine appare.

L'immagine è effettivamente incorporata nel Notebook ipynb e non è necessario pasticciare con file separati. Purtroppo questo non funziona ancora con Jupyter-Lab (v 1.1.4).

Modifica: funziona in JupyterLab versione 1.2.6


1
Sì pipistrello quando voglio scaricare come HTML embebed, ricevo l'errore "nbconvert fallito: allegato mancante: imagen.png". Perché?
efueyo,

Anche incollare un'immagine dagli appunti funziona anche per me (dopo aver impostato la modalità cella su Markdown)
CgodLEY

10

Se vuoi usare l'API Jupyter Notebook (e non più quella di IPython), trovo il sotto-progetto Jupyter di ipywidgets. Hai un Imagewidget. Docstring specifica che hai un valueparametro che è un byte. Quindi puoi fare:

import requests
from ipywidgets import Image

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

Sono d'accordo, è più semplice usare lo stile Markdown. Ma ti mostra l'API Notebook con visualizzazione delle immagini. Puoi anche ridimensionare l'immagine con i parametri widthe height.


Sembra che l'opzione sia valuestata rinominata datanel frattempo. Per un'immagine memorizzata localmente il codice ha Image(data=open(filename_png, 'rb').read())funzionato per me.
jottbe,

7

Ecco una soluzione per Jupyter e Python3 :

Ho lasciato cadere le mie immagini in una cartella denominata ImageTest. La mia directory è:

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

Per mostrare l'immagine ho usato questa espressione:

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

Fai attenzione anche a /e\


Questo funziona solo per me. Grazie! "ShowMyImage" funziona come un fascino!
Pranzell,

4

Questo funziona per me in una cella di markdown. In qualche modo non ho bisogno di menzionare specificamente se si tratta di un'immagine o di un semplice file.

![](files/picture.png)

In cosa differisce dalla risposta di Sebastian Stigler?
iNet

1
Volevo solo evidenziare che ha funzionato per me senza includere il titolo nella parentesi quadra. Niente di diverso
Pranav Pandit,

2

Una cosa che ho scoperto è che il percorso della tua immagine deve essere relativo al punto in cui il notebook è stato originariamente caricato. se esegui il cd in una directory diversa, ad esempio Immagini, il percorso di Markdown è ancora relativo alla directory di caricamento originale.


0

D'accordo, ho avuto gli stessi problemi e questo è ciò che ha funzionato e cosa no:

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

Mentre molte delle risposte di cui sopra danno modo di incorporare un'immagine usando un file o con il codice Python, c'è un modo per incorporare un'immagine nel taccuino jupyter stesso usando solo markdown e base64!

Per visualizzare un'immagine nel browser, è possibile visitare il collegamento data:image/png;base64,**image data here**per un'immagine PNG con codifica base64 o data:image/jpg;base64,**image data here**per un'immagine JPG con codifica base64. Un link di esempio può essere trovato alla fine di questa risposta.

Per incorporarlo in una pagina di markdown, usa semplicemente un costrutto simile come risposta del file, ma con un link base64 invece: ![**description**](data:image/**type**;base64,**base64 data**) . Ora la tua immagine è incorporata al 100% nel tuo file Jupyter Notebook!

Link di esempio: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==

Esempio di markdown: ![smile](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.