2012-06-27 17 views
5

In ambiente dev di google app engine Non riesco ad ottenere dati exif. Ho seguito la guida da qui https://developers.google.com/appengine/docs/python/images/imageclassDati exif dell'immagine nel motore di app di google

ho fatto seguito nel codice

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

ho solo nessuno. l'oggetto img va bene dato che posso eseguire img.resize ecc. Ho bisogno di ottenere informazioni Exif.

UPDATE: In questo modo sono stato in grado di ottenere i metadati,

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

Come spiegato nella documentazione che ho ottenuto molto 'limitata' impostata più precisamente questa

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

A quanto pare si ottiene molto di più grande set in ambiente reale, non ho idea del perché questa non può essere la caratteristica di dev env però. È abbastanza frustrante. Finché riesco ad ottenere il livello pyexiv2 exif, sono a posto, ma se si utilizza semplicemente PIL non è abbastanza buono. Attualmente, il PIL fornisce molte informazioni poco precise.

risposta

3

L'ambiente di sviluppo utilizza PIL che spiega ciò che si vede. L'ambiente di produzione non utilizza PIL e ti darà la maggior parte dei tag presenti nell'immagine.

+0

Quindi non fa uso di PIL nella produzione, questo è un sollievo. PIL seriamente soffia in termini di lettura EXIF. – specialscope

0

tratto dalla documentazione per 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. 

Si vuole passare parse_metadata=True-execute_transform al fine di ottenere ulteriori metadati inclusi i dati EXIF.

anche le note di fondo su di esso il ritorno None spiega perché si doveva chiamare execute_transforms al fine di ottenere nulla in cambio

Problemi correlati