Як вставити зображення або зображення в зошит з юпітером, або з локальної машини, або з веб-ресурсу?


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частини у посиланні. Це кодований 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-файлу.
Себастьян Стіглер

1
Я підозрював, що це було так, дякую за уточнення. Я вважав, що ця різниця між двома підходами була несподіваною і, принаймні, для мене визначила, який вибрати, тому я хотів привернути до цього увагу.
joelostblom

3
виконуючи це за допомогою розмітки, переконайтеся, що файл зображення знаходиться в тому самому каталозі, в якому лежить ваш ноутбук, з якоїсь дивної причини (в моєму випадку), юпітер-блокнот не був переконаний діяти на повний шлях ... ![title](picture.png)
Арун Кумар Хатрі

2
@ArunKumarKhattri - був той самий випуск, спрацьовував лише відвідний шлях до блокнота - у моєму випадку:! [Title] (../ img / picture.png)
ohad edelstain

209

Існує кілька способів розміщення зображення в ноутбуках Юпітера:

через 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)і не хвилюйтеся про пробіл).

для веб-зображення:

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

як показав @cristianmtr Звертаючи увагу, щоб не використовувати ні цитати, ""ні ті, що знаходяться ''навколо URL-адреси.

або локальний:

![title](img/picture.png)

продемонстрував @Sebastian


Це правда, що можливість зміни розміру картини цікава. Але для подальшого відображення для мене краще розмітка.
Гер

3
чи можете ви поставити локальний з абсолютним шляхом через розмітку? я намагався, але це, здається, не працює. Редагувати: Firefox (і Chrome) не дозволяють отримати доступ до локальних файлів для безпеки
Ciprian Tomoiagă

2
@SwimBikeRun слід вибрати правильний тип комірок. Ваш поточний тип комірки повинен бути кодом
youkaichao

1
Занижена відповідь. Дуже ретельно
Натан

1
версія розмітки не дозволяє пробіли у назвах файлів для тих, хто
стикається з

57

Крім того, ви можете використовувати звичайний HTML <img src>, який дозволяє змінювати висоту та ширину і все ще читається інтерпретатором розмітки:

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

3
Чудово! Я дуже віддаю перевагу цій відповіді, оскільки ми маємо контроль над розміром виводу! Це важливо, наприклад, коли ви використовуєте пеліканський інструмент для публікації зошита юпітера як статичних html-сторінок.
Свенд

7
HTML не потребує коми - просто поставте пробіл між вашими атрибутами - і рекомендується ставити лапки навколо всіх значень атрибутів, наприклад width="60".
коллін,

Святий ш * т. Це надзвичайно приголомшливо
Tessaracter

Так, це дивовижно :), але ... зображення втрачається у версіях PDF. Дуже погано.
babou

21

Я знаю, що це не зовсім актуально, але оскільки ця відповідь займає перше місце багато разів, коли ви шукаєте " як відображати зображення в Юпітері ", будь ласка, врахуйте і цю відповідь.

Ви можете використовувати 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, але те саме для Юпітера)

%% html

Render the cell as a block of HTML

19

На додаток до інших відповідей за допомогою HTML (або в Markdown, або за допомогою %%HTMLмагії:

Якщо вам потрібно вказати висоту зображення, це не буде працювати:

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

Це тому, що для стилів CSS в Jupyter використовується теги height: autoза замовчуванням img, що перекриває атрибут висоти HTML. heightНатомість вам потрібно замінити атрибут CSS :

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

18

Вставте зображення прямо в зошит Юпітера.

Примітка. На комп'ютері повинна бути локальна копія зображення

Ви можете вставити зображення в сам ноутбук Юпітера. Таким чином, вам не потрібно зберігати зображення окремо у папці.

Кроки:

  1. Перетворити клітинку на markdown:

    • натискання M на вибраній комірці
      АБО
    • У рядку меню Cell, Cell> Type Cell> Markdown.
      ( Примітка . Важливо перетворити клітинку в Markdown, інакше параметр "Вставити зображення" на кроці 2 не буде активним)
  2. Тепер перейдіть до рядка меню та виберіть Правка -> Вставити зображення.

  3. Виберіть зображення з диска та завантажте.

  4. Натисніть Ctrl+ Enterабо Shift+ Enter.

Це зробить зображення частиною ноутбука, і вам не потрібно завантажувати його в каталог або Github. Я вважаю, що це виглядає більш чисто і не схильне до порушення проблеми URL-адреси.


Врятували мене !, дякую
Мохаммед

Ще одна корисна функціональність, яку додали розробники Jupyter. Один недолік, який слід зазначити, для випадків, коли це має значення: воно включало б зображення в IPyNB Jasonкод, тим самим зробивши його набагато більшим і не є зручним для перегляду коду (наприклад, при огляді diffs).
eldad-a

13

Ось як це можна зробити за допомогою Markdown:

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

1
Чомусь відображення зображень за допомогою розмітки не працює для мене ... Ви впевнені, що синтаксис правильний cristianmtr?
Reblochon Masque

1
Так, тільки тестували його знову. Ви впевнені, що встановили клітинку на Markdown? Крім того, яку версію IPython / Jupyter ви використовуєте? Шахта каже: "Версія сервера ноутбуків 4.0.4 і працює на: Python 2.7.8 (за замовчуванням, 30 червня 2014, 16:08:48) [MSC v.1500 64 біт (AMD64)]" Ось скріншот з результатами: i.imgur.com/4ISJFDE.png
cristianmtr

остерігайтеся шляхів, те, що працює локально, не працює в Інтернеті, .e. imgs \ pic.png працює локально, а в Інтернеті - це 1: case sensitve (Pic.png) 2: зворотний нахил і коса риса не однакові ...: / -
Intelligent-Infrastructure

Чудово працює в Python 3.8. Спасибі
jamescampbell

У назві файлу для відмітки не допускаються пробіли, якщо хтось інший
зіткнувся з

12
  1. Встановіть у режимі комірки Markdown
  2. Перетягніть своє зображення в клітинку. Буде створена наступна команда:

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

  1. Виконати / запустити клітинку, і зображення відобразиться.

Зображення насправді вбудоване в ноутбук ipynb, і вам не потрібно возитися з окремими файлами. На жаль, це ще не працює з Jupyter-Lab (v 1.1.4).

Редагувати: працює у версії 1.2.6 JupyterLab


1
Так, bat, коли я хочу завантажити як вимкнений HTML, я отримую помилку "nbconvert не вдалося: відсутній вкладення: imagen.png". ¿Чому?
efueyo

Вставка зображення з буфера обміну також працює для мене (після встановлення в режимі комірки Markdown)
CgodLEY

10

Якщо ви хочете використовувати API Jupyter Notebook (а вже не IPython), я знаходжу підпроект ipywidget Jupyter. У вас є Imageвіджет. Docstring вказує, що у вас є valueпараметр, який є байтами. Отже, ви можете зробити:

import requests
from ipywidgets import Image

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

Я згоден, простіше використовувати стиль Markdown. Але він показує вам API відображення зображень для ноутбука. Ви також можете змінити розмір зображення за допомогою параметрів widthта height.


Здається, варіант тим часом valueбув перейменований на dataДля локально збереженого зображення код Image(data=open(filename_png, 'rb').read())працював для мене.
jottbe

7

Ось рішення для Юпітера та Python3 :

Я скинув свої зображення в папку з назвою ImageTest. Мій каталог:

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

Щоб показати зображення, я використав цей вираз:

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

Також стежте за /і\


Це працює лише для мене. Дякую! "ShowMyImage" працює як шарм!
Пранцелл

4

Це працює для мене у комірці розмітки. Якось мені не потрібно конкретно згадувати, чи це його зображення чи простий файл.

![](files/picture.png)

Чим він відрізняється від відповіді Себастьяна Стіглера?
iNet

1
Просто хотілося підкреслити, що це спрацьовувало для мене, не включаючи заголовок у квадратну дужку. Нічого іншого.
Пранів Пандіт

2

Одне, що я знайшов - шлях вашого зображення повинен бути відносно того, звідки було завантажено зошит. якщо ви перейдете в інший каталог, наприклад, "Картинки", ваш шлях до Маркдану все ще є відносно вихідного каталогу завантаження.


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, є спосіб вставити зображення у сам ноутбук юпітера, використовуючи лише розмітку та base64!

Щоб переглянути зображення у веб-переглядачі, ви можете перейти за посиланням data:image/png;base64,**image data here**на PNG-зображення, закодоване базою64, або data:image/jpg;base64,**image data here**на зображення JPG, закодоване базою 64. Приклад посилання можна знайти в кінці цієї відповіді.

Для того, щоб вбудувати це в сторінку уцінки, просто використовувати подібну конструкцію у файлі відповідей, але з base64 посилання замість: ![**description**](data:image/**type**;base64,**base64 data**). Тепер ваше зображення на 100% вбудоване у ваш файл ноутбука Юпітер!

Приклад посилання: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==

Приклад розмітки: ![smile](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.