No hay necesidad de usar e instalar la Lybrary PIL para esto, existe el módulo estándar imghdr fited exactamente para este tipo de uso.
Ver http://docs.python.org/library/imghdr.html
import imghdr
image_type = imghdr.what(filename)
if not image_type:
print "error"
else:
print image_type
Como usted tiene una imagen de una corriente que puede utilizar la opción de corriente, probablemente como esto:
image_type = imghdr.what(filename, incomming_image)
podía comprender esto funciona para mí en los pilones (incluso si no he terminado todo): en la plantilla de Mako:
${h.form(h.url_for(action="save_image"), multipart=True)}
Upload file: ${h.file("upload_file")} <br />
${h.submit("Submit", "Submit")}
${h.end_form()}
en la controladora de carga:
def save_image(self):
upload_file = request.POST["upload_file"]
image_type = imghdr.what(upload_file.filename, upload_file.value)
if not image_type:
return "error"
else:
return image_type
Esto no funcionará en App Engine: PIL contiene código C y, por lo tanto, no está disponible. La API de imágenes (http://code.google.com/appengine/docs/images/) usa PIL, pero está apagada. – chryss