In [1]:
# Display a remote JPEG URL in Matplotlib without saving to disk.  
# Thanks to Robert Kern for the help!

In [2]:
from pylab import *
import urllib
import urllib2
import cStringIO
from PIL import Image

In [3]:
# It's easy to load a remote image URL if it's a PNG:
url = 'http://optipng.sourceforge.net/pngtech/img/lena.png'
im = imread(urllib2.urlopen(url),format='png')
imshow(im)


Out[3]:
<matplotlib.image.AxesImage at 0x389d110>

In [6]:
#  But here's how you have to do it if the URL is a JPG: 
#url = 'http://www.kitware.com/blog/files/128_1232259669.jpg'
url='http://4.bp.blogspot.com/-jUHXZ0jW4Lc/T1t3W0ex2BI/AAAAAAAAFeY/7TY0cTty1og/s1600/Fabio.jpg'
im = Image.open(cStringIO.StringIO(urllib.urlopen(url).read()))
imshow(im)


Out[6]:
<matplotlib.image.AxesImage at 0x3dd1910>

In [5]:
# .... Because this doesn't work:
url = 'http://4.bp.blogspot.com/-jUHXZ0jW4Lc/T1t3W0ex2BI/AAAAAAAAFeY/7TY0cTty1og/s1600/Fabio.jpg'
im = imread(urllib2.urlopen(url),format='jpg')
imshow(im)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-54891d5ffddc> in <module>()
      1 # .... Because this doesn't work:
      2 url = 'http://4.bp.blogspot.com/-jUHXZ0jW4Lc/T1t3W0ex2BI/AAAAAAAAFeY/7TY0cTty1og/s1600/Fabio.jpg'
----> 3 im = imread(urllib2.urlopen(url),format='jpg')
      4 imshow(im)

/home/rsignell/epd-7.2-1/lib/python2.7/site-packages/matplotlib/pyplot.pyc in imread(*args, **kwargs)
   2029 @docstring.copy_dedent(_imread)
   2030 def imread(*args, **kwargs):
-> 2031     return _imread(*args, **kwargs)
   2032 
   2033 @docstring.copy_dedent(_imsave)

/home/rsignell/epd-7.2-1/lib/python2.7/site-packages/matplotlib/image.pyc in imread(fname, format)
   1217 
   1218     if ext not in handlers.iterkeys():
-> 1219         im = pilread(fname)
   1220         if im is None:
   1221             raise ValueError('Only know how to handle extensions: %s; with PIL installed matplotlib can handle more images' % handlers.keys())

/home/rsignell/epd-7.2-1/lib/python2.7/site-packages/matplotlib/image.pyc in pilread(fname)
   1200                 return pil_to_array(image)
   1201         else:
-> 1202             image = Image.open(fname)
   1203             return pil_to_array(image)
   1204 

/home/rsignell/epd-7.2-1/lib/python2.7/site-packages/PIL/Image.pyc in open(fp, mode)
   1962             factory, accept = OPEN[i]
   1963             if not accept or accept(prefix):
-> 1964                 fp.seek(0)
   1965                 return factory(fp, filename)
   1966         except (SyntaxError, IndexError, TypeError):

AttributeError: addinfourl instance has no attribute 'seek'

In [ ]: