2012-06-27 25 views
5

En el entorno de desarrollo del motor de aplicaciones de Google no puedo obtener datos de exif. He seguido guía de aquí https://developers.google.com/appengine/docs/python/images/imageclassDatos de exif de imagen en el motor de la aplicación de google

he hecho siguiente en el código

def getResizedImage(self, image, imagemaxWidth, imagemaxHeight): 
    img = images.Image(image_data=image) 
    logging.error(img.get_original_metadata()) 

solo me dan Ninguno. el objeto img está bien ya que puedo realizar img.resize etc. Necesito obtener información de Exif.

ACTUALIZACIÓN: Al hacer esto yo era capaz de obtener los metadatos,

def getResizedImage(self, image, imagemaxWidth, imagemaxHeight): 
    img = images.Image(image_data=image) 
    img.rotate(0) 
    img.execute_transforms() 
    logging.error(img.get_original_metadata()) 

Como se explica en la documentación que se puso muy 'limitado' ajustar con mayor precisión esta

{u'ImageLength': 480, u'ImageWidth': 640} 

Al parecer, usted obtiene mucho mayor conjunto en el entorno real, no tengo idea de por qué esta no puede ser la característica de dev env. Es bastante frustrante. Mientras pueda obtener el nivel pyexiv2 exif, estoy bien, pero si solo uso PIL no es lo suficientemente bueno. Actualmente, PIL proporciona muy poca información exif.

Respuesta

3

El entorno de desarrollo usa PIL, lo que explica lo que ve. El entorno de producción no usa PIL y le dará la mayoría de las etiquetas que se encuentran en la imagen.

+0

para que no se utilizan en la producción de PIL, eso es un alivio. PIL realmente sopla en términos de lectura EXIF. – specialscope

0

tomadas de los documentos de get_original_metadata

 
Returns: 
    dict with string keys. If execute_transform was called with parse_metadata 
    being True, this dictionary contains information about various properties 
    of the original image, such as dimensions, color profile, and properties 
    from EXIF. 
    Even if parse_metadata was False or the images did not have any metadata, 
    the dictionary will contain a limited set of metadata, at least 
    'ImageWidth' and 'ImageLength', corresponding to the dimensions of the 
    original image. 
    It will return None, if it is called before a successful 
    execute_transfrom. 

Se debe pasar a parse_metadata=Trueexecute_transform con el fin de obtener más metadatos incluidos los datos EXIF.

también la nota inferior al respecto regresar None explica por qué tuvo que llamar execute_transforms el fin de obtener nada a cambio

Cuestiones relacionadas