267 votes

Insérer une image dans la balise markdown du notebook IPython

Je commence à dépendre fortement de l'application IPython notebook pour développer et documenter des algorithmes. C'est génial; mais il y a quelque chose qui semble possible, mais je ne peux pas trouver comment le faire:

J'aimerais insérer une image locale dans mon notebook IPython markdown (local) pour aider à documenter un algorithme. Je sais suffisamment pour ajouter quelque chose comme ![](image.png) au markdown, mais c'est à peu près tout ce que je sais. Je suppose que je pourrais mettre l'image dans le répertoire représenté par 127.0.0.1:8888 (ou un sous-répertoire) pour pouvoir y accéder, mais je ne peux pas trouver où se trouve ce répertoire. (Je travaille sur un mac.) Donc, est-il possible de faire ce que j'essaie de faire sans trop de difficulté?

279voto

Philipp Schwarz Points 4503

La plupart des réponses données jusqu'à présent vont dans la mauvaise direction, suggérant de charger des bibliothèques supplémentaires et d'utiliser le code au lieu de la balise. Dans les carnets Ipython/Jupyter, c'est très simple. Assurez-vous que la cellule est en effet en balisage et pour afficher une image utilisez :

![texte alternatif](nomimage.png "Titre")

Un avantage supplémentaire par rapport aux autres méthodes proposées est que vous pouvez afficher tous les formats de fichier courants, y compris jpg, png et gif (animations).

0 votes

Curieux de savoir comment vous connaissez cette commande. Est-ce propre à Jupyter ou est-ce une langue (formatage latex, peut-être) que vous utilisez à l'intérieur de Jupyter pour ajouter l'image ?

2 votes

@ Alex G, Markdown est un langage avec une syntaxe de formatage de texte brut conçu de telle sorte qu'il peut être converti en HTML et dans de nombreux autres formats. Markdown est souvent utilisé pour créer du texte enrichi en utilisant un éditeur de texte brut. Consultez le lien suivant pour apprendre la syntaxe : github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet

1 votes

@PhilippSchwarz y a-t-il des options pour contrôler la taille de l'image "collée" dans votre exemple ci-dessus? En utilisant la balise , de telles options apparaissent approximativement comme ceci .

247voto

minrk Points 10008

Les fichiers à l'intérieur du répertoire du cahier sont disponibles sous une URL "files/". Donc, s'ils sont dans le chemin de base, ce serait ![](files/image.png), et les sous-répertoires, etc. sont également disponibles: ![](files/subdir/image.png), etc.

Mise à jour: à partir d'IPython 2.0, le préfixe files/ n'est plus nécessaire (cf. notes de mise à jour). Donc maintenant, la solution ![](image.png) fonctionne simplement comme prévu.

0 votes

Qu'est-ce que le "répertoire du cahier"? Voulez-vous dire que l'image doit être dans le même répertoire que le fichier *.ipynb? J'ai essayé cela, mais ça n'a pas fonctionné.

3 votes

Ah, vous utilisez probablement la version 0.12, n'est-ce pas? La possibilité de servir des fichiers locaux est actuellement uniquement disponible dans la version principale. Et oui, le "répertoire de carnets" est le répertoire contenant les carnets de notes (.fichiers ipynb).

124 votes

Étant donné que vous êtes en markdown, pourquoi ne pas utiliser ![caption](files/image.png)?

83voto

Gomes Points 419

Je suis en train d'utiliser ipython 2.0, donc juste deux lignes.

from IPython.display import Image
Image(filename='output1.png')

26 votes

Voici la bonne manière d'afficher une image dans une cellule de code. La réponse de minrk est la bonne manière d'afficher une image dans une cellule de markdown.

3 votes

En utilisant le carnet Jupyter 4.2.0, l'image n'apparaît pas à moins que je n'appelle aussi display : from IPython.display import Image, display; display(Image(filename='output1.png'))

44voto

Intégrer une image dans Jupyter NB est une opération beaucoup plus simple que ce que la plupart des gens ont laissé entendre ici.

  1. Créez simplement une cellule Markdown vide.
  2. Faites ensuite glisser-déposer le fichier image dans la cellule Markdown vide.

Le code Markdown qui insérera l'image apparaîtra alors.

Par exemple, une chaîne affichée en gris ci-dessous apparaîtra dans la cellule Jupyter:

![Venus_flytrap_taxonomy.jpg](attachment:Venus_flytrap_taxonomy.jpg)

  1. Exécutez ensuite la cellule Markdown en appuyant sur Maj-Entrée. Le serveur Jupyter insérera ensuite l'image, qui apparaîtra alors.

Je fais tourner le serveur Jupyter notebook version : 5.7.4 avec Python 3.7.0 sur Windows 7.

C'est tellement simple !!

MISE À JOUR AU 18 mars 2021: Cette méthode simple de "Glisser-Déposer-à-partir-du-Système-de-Fichiers-Windows" fonctionne toujours bien dans JupyterLab. JupyterLab insère le code HTML approprié pour intégrer directement et définitivement l'image dans le notebook, de sorte que l'image est stockée dans le fichier .ipynb. Je fais tourner Jupyter Lab v2.2.7 sous Windows 10 Python 3.7.9 toujours en fonctionnement dans JupyterLab. Je fais tourner Jupyter Lab v2.2.7 en utilisant Python 3.7.9 sous Windows 10.

Cela a cessé de fonctionner dans le Jupyter Notebook Classic v6.1.5 l'année dernière. J'ai signalé un avis de bogue aux développeurs du Jupyter Notebook Classic.

Cela fonctionne à nouveau dans la dernière version du Jupyter Notebook Classic. Je viens de l'essayer dans la v6.4 le 15/07/2021. Merci aux développeurs du Jupyter NB Classic !!

0 votes

Malheureusement, cette méthode ne fonctionne pas lorsque la version 6.0 de Jupyter Notebook est hébergée dans Google Cloud. Avez-vous une solution de contournement qui fonctionne sans privilèges d'administrateur, quelque chose d'autre que l'installation de l'extension nbextension glisser-déposer ?

1 votes

Je réalise même du glisser-déposer de ma machine locale à mon notebook distant. Merci

0 votes

Alors que je n'étais (comme BND) pas capable de faire glisser une figure de mon ordinateur local dans un cahier hébergé à distance, j'ai pu le faire lorsque j'étais en hébergement local, et en plus j'ai confirmé que l'image réelle est intégrée dans le fichier du cahier pour que vous puissiez ensuite envoyer le fichier .ipynb à d'autres personnes et le graphique sera préservé. La cellule de markdown avec le graphique ressemble à ceci dans un éditeur de texte brut (données d'image raccourcies ...): { "attachments": { "download.png": { "image/png": "iVBORw0KGgoAAAAN ... U5ErkJggg==" } },

27voto

Mike Points 359

[Obsolète]

IPython/Jupyter a maintenant un support pour des modules d'extension qui peuvent insérer des images via copier-coller ou glisser-déposer.

https://github.com/ipython-contrib/IPython-notebook-extensions

L'extension de glisser-déposer semble fonctionner dans la plupart des navigateurs

https://github.com/ipython-contrib/IPython-notebook-extensions/tree/master/nbextensions/usability/dragdrop

Mais le copier-coller ne fonctionne que dans Chrome.

2 votes

Cette réponse a besoin de quelques votes positifs. Très peu connaissent les extensions Ipython.

0 votes

Je viens d'essayer le glisser-déposer sur Safari et Chrome, ça ne fonctionne pas pour moi (OSX, Py3, toutes les mises à jour)

2 votes

Le deuxième lien que vous avez posté est rompu -- l'extension n'est plus supportée ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X