2012-08-24 8 views
7

Diese einfach sein muss, aber ich kann nicht verstehen, wie man jetzt ohne Modul urllib und manuell Remote-DateiWie Remote-Bild zeichnen (von HTTP-URL)

holt I Grundstück mit Fern Bild zu überlagern will (lasst sie Sagen Sie "http://matplotlib.sourceforge.net/_static/logo2.png"), und weder imshow() noch imread() können das Bild laden.

Irgendwelche Ideen, die Funktion erlauben, Fernbild zu laden?

Antwort

9

Es ist einfach, in der Tat:

import urllib2 
import matplotlib.pyplot as plt 

# create a file-like object from the url 
f = urllib2.urlopen("http://matplotlib.sourceforge.net/_static/logo2.png") 

# read the image file in a numpy array 
a = plt.imread(f) 
plt.imshow(a) 
plt.show() 
+0

Nun, ich hatte gehofft, dass MPL diese w/o urllib tun können, aber es vielleicht kippen. Ich warte ein wenig mehr und wenn es wirklich unmöglich ist, werde ich Sie als Antwort markieren – theta

+0

Mit Blick auf die Dokumente Ich glaube nicht, dass es möglich ist. Und es ist nur 2 Zeilen extra hier, keine große Sache. –

+0

Importieren Sie für Python 3 statt "urllib2" 'urllib' und rufen Sie anstelle von' urllib2.urlopen' 'urllib.request.urlopen' auf. – Toby

3

Dieses in einem Notebook mit Python für mich funktioniert 3.5:

from skimage import io 
import matplotlib.pyplot as plt 

image = io.imread(url) 
plt.imshow(image) 
plt.show() 
+1

Ich habe 'ValueError: ungültiger PNG-Header' für die 'urllib2'-Lösung, aber das funktionierte gut für mich –

+1

Um skimage zu bekommen, 'pip install scikit-image' – Toby