Yerel bir makineden veya bir web kaynağından jupyter not defterine resim veya resim nasıl yerleştirilir?


304

Bir jupyter not defterine görüntü eklemek istiyorum.

Aşağıdakileri yaptıysam işe yarar:

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

Ama bir işaretleme hücresine görüntüleri dahil etmek istiyorum ve aşağıdaki kod 404 hatası verir:

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

Ben de denedim

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

Ama yine de aynı hatayı alıyorum:

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

Yanıtlar:


306

Markdown'da görüntü dosyalarının adının çevresinde tırnak işaretleri kullanmamalısınız!

Hata mesajınızı dikkatlice okursanız, %22 , bağlantıda kısmı . Bu html kodlu tırnak işareti.

Hattı değiştirmelisin

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

için

![title](img/picture.png)

GÜNCELLEME

Aşağıdaki dosya yapısına sahip olduğunuz ve jupyter notebookkomutu dosyanın example.ipynb(<- görüntünün markdown'unu içerir) depolandığı dizinde çalıştırdığınız varsayılır :

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

8
Benim için, dizüstü bilgisayar html olarak indirilirken bu işe yaramaz. Kırık bir resim bağlantısı gösterir. IPython.display.ImageÇalışmaları beklendiği gibi kullanma .
joelostblom

7
@cheflo Yukarıdaki sözdizimi görüntüyü html dosyasına gömmez . Html dosyasının kaynak koduna bakarsanız, <img src = "img / picture.png" alt = "title"> gibi bir giriş bulacaksınız. Resmi görmek için imggöreli klasördeki html dosyasına kopyalamanız gerekir .
Sebastian Stigler

1
Durumun bu olduğundan şüphelendim, açıkladığınız için teşekkürler. İki yaklaşım arasındaki bu farkın beklenmedik olduğunu düşündüm ve en azından benim için hangisini seçeceğimi belirledim, bu yüzden ona dikkat çekmek istedim.
joelostblom

3
işaretleme yoluyla yaparken, görüntü dosyasının dizüstü bilgisayarınızın bulunduğu dizinde olduğundan emin olun, bazı garip nedenlerle (benim durumumda), jupyter-notebook tam yolda hareket etmeye ikna olmamıştı ... ![title](picture.png)
Arun Kumar Khattri

2
@ArunKumarKhattri - aynı sorun vardı, sadece dizüstü bilgisayar için reletive yolu çalıştı - benim durumumda
:!

209

Jupyter not defterlerine resim göndermenin birkaç yolu vardır:

HTML ile:

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

Yeniden boyutlandırmak için HTML etiketleri kullanma yeteneğini korursunuz ...

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

Yerel olarak depolanan görüntüleri göreceli veya mutlak yolla da görüntüleyebilirsiniz.

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

görüntü ekran ayarlarından daha genişse: teşekkürler

unconfined=Truegörüntünün maksimum genişlik sınırlamasını devre dışı bırakmak için kullanın

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

veya işaretleme yoluyla:

  • hücrenin bir kod hücresi değil, bir işaretleme hücresi olduğundan emin olun, yorumlarda @ 游 凯 超 teşekkürler)
  • Bazı sistemlerde, işaretlemenin dosya adlarında beyaz boşluğa izin vermediğini lütfen unutmayın. @CoffeeTableEspresso ve yorumlardaki @zebralamy sayesinde)
    ( Macos'ta, bir markdown hücresinde olduğunuz sürece bunu yaparsınız: ![title](../image 1.png)ve beyaz boşluk hakkında endişelenmeyin).

bir web resmi için:

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

@cristianmtr tarafından gösterildiği gibi Bu alıntıları ""veya alıntıları kullanmamaya dikkat etmek'' .

veya yerel olanı:

![title](img/picture.png)

@Sebastian tarafından gösterildi


Resmi yeniden boyutlandırma olasılığının ilginç olduğu doğrudur. Ancak gelecekteki render için markdown benim için daha iyi.
Ger

3
markdown yoluyla mutlak yolla yerel bir tane koyabilir misiniz? denedim ama işe yaramıyor gibi görünüyor. Düzenleme: Firefox (ve Chrome) güvenlik için yerel dosyalara erişime izin vermiyor
Ciprian Tomoiagă

2
@SwimBikeRun doğru hücre türünü seçmelisiniz. mevcut hücre türünüz kod
youkaichao

1
Yetersiz cevap. Çok kapsamlı
Nathan

1
işaretleme sürümü, dosya adlarında boşluklara izin vermez, bu sorunla karşılaşan herkes için
CoffeeTableEspresso

57

Alternatif olarak, <img src>yüksekliği ve genişliği değiştirmenize izin veren ve yine de etiketleme yorumlayıcısı tarafından okunan düz bir HTML kullanabilirsiniz :

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

3
Harika! Çıktı boyutu üzerinde kontrole sahip olduğumuz için bu cevabı çok tercih ediyorum! Örneğin, jupyter not defterini statik html sayfaları olarak yayınlamak için pelikan aracını kullanırken önemlidir.
Svend

7
HTML virgül gerektirmez (özellikleriniz arasında boşluk bırakmanız yeterlidir) ve tüm özellik değerlerinin etrafına tırnak işareti koymanız önerilir, örn width="60".
colllin

Holy sh * t. Bu süper harika
Tessaracter

Evet harika :) ama ... PDF sürümlerinde görüntü kayboluyor. Çok kötü.
babou

21

Bunun tam olarak alakalı olmadığını biliyorum, ancak bu cevap ' Jupyter'de görüntüleri nasıl görüntüleyeceğinizi aradığınızda birçok kez sıralandığı için , lütfen bu yanıtı da düşünün.

Bir görüntüyü aşağıdaki gibi göstermek için matplotlib kullanabilirsiniz.

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

19

Burada kimse html hücre büyü seçeneği bahsetmedi şaşırdım. dan docs (Jupyter için ipython ancak aynı)

%% html

Render the cell as a block of HTML

19

HTML kullanarak diğer yanıtlara ek olarak (Markdown'da veya %%HTML sihri :

Görüntü yüksekliğini belirtmeniz gerekiyorsa, bu çalışmaz:

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

Bunun nedeni, Jupyter'deki CSS stilinin HTML yüksekliği özniteliğini geçersiz kılan etiketler height: autoiçin varsayılan olarak kullanmasıdır img. Bunun heightyerine CSS özelliğinin üzerine yazmanız gerekir :

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

18

Görüntüyü doğrudan Jupyter not defterine yerleştirin.

Not: Bilgisayarınızda görüntünün yerel bir kopyası olmalıdır

Görüntüyü Jupyter not defterine ekleyebilirsiniz. Bu şekilde görüntüyü klasörde ayrı tutmanız gerekmez.

Adımlar:

  1. Hücreyi dönüştür markdown:

    • seçilen hücrede M tuşuna basarak
      VEYA
    • Menü çubuğundan Hücre> Hücre Türü> İşaretleme'yi seçin.
      ( Not: Hücreyi Markdown'a dönüştürmek önemlidir, aksi takdirde 2. Adımdaki "Resim Ekle" seçeneği etkin olmayacaktır)
  2. Şimdi menü çubuğuna gidin ve Düzenle -> Resim Ekle'yi seçin.

  3. Diskinizden resim seçin ve yükleyin.

  4. Ctrl+ EnterVeya Shift+ düğmesine basın Enter.

Bu, görüntüyü not defterinin bir parçası haline getirir ve dizine veya Github'a yüklemenize gerek yoktur. Bunun daha temiz ve bozuk URL sorununa eğilimli olmadığını hissediyorum.


Beni
kurtardı

Devs tarafından eklenen bir başka yararlı işlevsellik Jupyter. Dikkat edilmesi gereken bir dezavantaj, bunun önemli olduğu durumlar için: IPyNB Jasonkoddaki görüntüyü içerdiğinden, kod revizyonu dostu olarak değil, daha büyük hale getirilir (örneğin, denetlenirken diff).
eldad-a

13

Markdown ile şu şekilde yapabilirsiniz:

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

1
Bazı nedenlerden dolayı, görüntüleri markdown yoluyla görüntülemek benim için işe yaramıyor ... Sözdiziminin doğru olduğundan emin misiniz? Cristianmtr?
Reblochon Masque

1
Evet, tekrar test ettim. Hücreyi Markdown olarak ayarladığınızdan emin misiniz? Ayrıca, hangi IPython / Jupyter sürümünü kullanıyorsunuz? Mine diyor ki: "Dizüstü bilgisayar sunucusunun sürümü 4.0.4 ve çalışıyor: Python 2.7.8 (varsayılan, 30 Haz 2014, 16:08:48) [MSC v.1500 64 bit (AMD64)]" İşte bir sonuçları ile ekran görüntüsü: i.imgur.com/4ISJFDE.png
cristianmtr

yollara dikkat edin, yerel olarak çalışan şey çevrimiçi çalışmaz, .e. imgs \ pic.png yerel olarak çalışıyor, çevrimiçi iken 1: case sensitve (Pic.png) 2: backslach ve slash aynı değil ...: / -
Akıllı Altyapı

Python 3.8'de harika çalışıyor. Thanks
jamescampbell

Boşluk başka durumda herkes, markdown için dosya izin verilir bu sorun haline koşuyordu
CoffeeTableEspresso

12
  1. Hücre modunu İşaretleme olarak ayarla
  2. Resminizi hücreye sürükleyip bırakın. Aşağıdaki komut oluşturulacaktır:

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

  1. Hücreyi Yürüt / Çalıştır ve görüntü gösterilir.

Görüntü aslında ipynb Notebook'a gömülüdür ve ayrı dosyalarla uğraşmanıza gerek yoktur. Bu ne yazık ki henüz Jupyter-Lab (v 1.1.4) ile çalışmıyor.

Düzenleme: JupyterLab Sürüm 1.2.6 çalışır


1
Evet HTML gömme olarak indirmek istediğinizde yarasa, "nbconvert başarısız oldu: ekli: imagen.png" hatası alıyorum. Neden?
efueyo

Panodan bir resim yapıştırmak da benim için çalışıyor (hücre modunu ayarladıktan sonra Markdown)
CgodLEY

10

Jupyter Notebook API'sini (artık IPython'u değil) kullanmak istiyorsanız, ipywidgets Jupyter'in alt projesini buluyorum . Bir Imagewidget'ınız var. Docstring value, bayt olan bir parametreniz olduğunu belirtir . Böylece şunları yapabilirsiniz:

import requests
from ipywidgets import Image

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

Katılıyorum, Markdown stilini kullanmak daha basit. Ancak size Görüntü ekranı Dizüstü Bilgisayar API'sını gösterir. Görüntüyü widthve heightparametreleriyle de yeniden boyutlandırabilirsiniz .


Bu arada seçenek valueyeniden adlandırılmış gibi görünüyor data. Yerel olarak saklanan bir görüntü için kod Image(data=open(filename_png, 'rb').read())benim için çalıştı.
jottbe

7

İşte Jupyter ve Python3 için bir Çözüm :

Resimlerimi adlı bir klasöre bıraktım ImageTest. Dizim:

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

Resmi göstermek için bu ifadeyi kullandım:

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

Ayrıca dikkat /ve\


Bu sadece benim için geçerli. Teşekkürler! "ShowMyImage" bir cazibe gibi çalışıyor!
Pranzell

4

Bu benim için bir markdown hücresinde işe yarıyor. Nedense bir görüntü veya basit bir dosya ise özellikle bahsetmeye gerek yok.

![](files/picture.png)

Sebastian Stigler'in cevabından farkı nedir?
iNet

1
Sadece köşeli parantez içine başlık eklemeksizin benim için çalıştığını vurgulamak istedim. Hiçbir şey farklı değil.
Pranav Pandit

2

Bulduğum bir şey, görüntünüzün yolunun, dizüstü bilgisayarın ilk yüklendiği yere göre olması gerektiğidir. Resimler gibi farklı bir dizine cd yazarsanız, Markdown yolunuz hala orijinal yükleme diziniyle ilişkilidir.


0

Aynı sorunları yaşadım ve bu ne işe yaradı ve ne yapmadım:

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

Yukarıdaki yanıtların birçoğu bir dosyayı veya Python kodunu kullanarak bir görüntü gömmek için yollar sağlarken, sadece markdown ve base64 kullanarak bir görüntüyü jupyter not defterine gömmenin bir yolu vardır!

Tarayıcıda bir resim görüntülemek data:image/png;base64,**image data here**için, base64 kodlu bir PNG resminin bağlantısını ziyaret edebilir veyadata:image/jpg;base64,**image data here** base64 kodlu bir JPG resmi . Bu cevabın sonunda örnek bir bağlantı bulunabilir.

Bir markdown sayfasına bu gömmek için, sadece dosya cevapları benzer bir yapı kullanabilirsiniz, ancak bir base64 ile yerine bağlantı: ![**description**](data:image/**type**;base64,**base64 data**). Şimdi resminiz% 100 Jupyter Notebook dosyanıza gömülü!

Örnek bağlantı: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==

Örnek işaretleme: ![smile](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAD9JREFUGJW1jzEOADAIAqHx/1+mE4ltNXEpI3eJQknCIGsiHSLJB+aO/06PxOo/x2wBgKR2jCeEy0rOO6MDdzYQJRcVkl1NggAAAABJRU5ErkJggg==)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.