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