How do I copy a remote image in python? How do I copy a remote image in python? python python

How do I copy a remote image in python?


To download:

import urllib2img = urllib2.urlopen("http://example.com/image.jpg").read()

To verify can use PIL

import StringIOfrom PIL import Imagetry:    im = Image.open(StringIO.StringIO(img))    im.verify()except Exception, e:    # The image is not valid

If you just want to verify this is an image even if the image data is not valid: You can use imghdr

import imghdrimghdr.what('ignore', img)

The method checks the headers and determines the image type. It will return None if the image was not identifiable.


Downloading stuff

import urlliburl = "http://example.com/image.jpg"fname = "image.jpg"urllib.urlretrieve( url, fname )

Verifying that it is a image can be done in many ways. The hardest check is opening the file with the Python Image Library and see if it throws an error.

If you want to check the file type before downloading, look at the mime-type the remote server gives.

import urlliburl = "http://example.com/image.jpg"fname = "image.jpg"opener = urllib.urlopen( url )if opener.headers.maintype == 'image':    # you get the idea    open( fname, 'wb').write( opener.read() )


Same thing using httplib2...

from PIL import Imagefrom StringIO import StringIOfrom httplib2 import Http# retrieve imagehttp = Http()request, content = http.request('http://www.server.com/path/to/image.jpg')im = Image.open(StringIO(content))# is it valid?try:    im.verify()except Exception:    pass  # not valid