Si necesitas bajar una imagen con Python de la Web, transfórmala y guardarla como archivo local, este ejemplo puede ser útil.
Código para bajar una imagen con Python de la Web:
from PIL import Image
from urllib import urlopen
from StringIO import StringIO
URL = 'http://g.cdn.mersap.com/fotografia/files/2013/07/locas-imagenes-10.jpg'
data = urlopen(URL).read() # descarga y almacena la imagen en una cadena
file = StringIO(data) # trata la cadena como un fichero
img = Image.open(file) # lee el fichero y devuelve la imagen
print img.size # informa del tamaño
print img.format # formato
print img.info # meta información
img_rot = img.rotate(90) # rotar la imagen 90 grados
img_rot.save('/home/dmiro/imagenlocal.jpg') # y salvar la imagen en local
print "imagen salvada"
Resultado:
(620, 425)
JPEG
{'jfif': 258, 'jfif_unit': 0, 'adobe': 100, 'jfif_version': (1, 2),
'adobe_transform': 100, 'jfif_density': (100, 100)}
imagen salvada
Aquí una pequeña explicación de cada una de las librerías utilizadas en el código
StringIO y cStringIO
StringIO proporciona un medio adecuado para trabajar con texto en memoria utilizando la API de archivo (leer, escribir, etc.) y por lo tanto implementa las mismas . Hay dos implementaciones separadas. La versión cStringIO está implementada en C para aumentar la velocidad, mientras que StringIO está escrita en Python para la portabilidad.
PIL
Python Imaging Library (PIL) es una libreria que añade tratamiento de imágenes a Python. Es compatible con muchos formatos de archivo y proporciona capacidades de procesamiento de imágenes y gráficos.
urllib
El módulo urllib proporciona una interfaz de alto nivel para obtener datos de la WWW. En particular, la función urlopen () es similar a la Built-in function open() pero acepta una URL en lugar de un nombre de archivo:
urlopen(url)
Abre un socket a un servidor de algún lugar en la red. Si la conexión no se puede hacer se produce la excepción IOError. Si todo iba bien, se devuelve un objeto de tipo fichero, compatible con los métodos: read(), readline(), readlines(), fileno(), close(), info(), getcode() y geturl()
urlretrive(url, [filename])
Copia el recurso de red indicado la URL a un archivo local. Devuelve una tupla (filename, headers) donde filename es el nombre del archivo local bajo el que se puede encontrar el recursos y las cabeceras es cualquier método de objeto devuelto por urlopen(). El segundo argumento, si está presente, especifica la ubicación del archivo donde se copia el recurso. En su defecto será un archivo temporal.