2011-01-25 1 views

risposta

13

Se l'immagine viene memorizzata in un BlobProperty, quindi i dati sono memorizzati nel datastore, e se profile è la vostra entità, quindi l'altezza si può accedere come:

from google.appengine.api import images 
height = images.Image(image_data=profile.avatar).height 

Se l'immagine è nella blobstore, (blobstore.BlobReferenceProperty nel datastore), quindi hai 2 modi per farlo, il modo migliore è complicato e richiede di ottenere un lettore per il blob e di alimentarlo a un lettore exif per ottenere le dimensioni. Un modo più semplice è:

se avatar = db.BlobReferenceProperty() e profile è la vostra entità, allora:

from google.appengine.api import images 
img = images.Image(blob_key=str(profile.avatar.key())) 

# we must execute a transform to access the width/height 
img.im_feeling_lucky() # do a transform, otherwise GAE complains. 

# set quality to 1 so the result will fit in 1MB if the image is huge 
img.execute_transforms(output_encoding=images.JPEG,quality=1) 

# now you can access img.height and img.width 
+1

si può mostrare anche il miglior metodo/complicata pure qui? – Lipis

+0

wow fantastico. Mi stavo chiedendo perché non potessi ottenere la larghezza –

5

Un blob non è un'immagine, è un grumo di dati.

Al fine di rendere un Image dal vostro blob, è necessario chiamare Image(blob_key=your_blob_key) se il blob è archiviato nella blobstore, o Image(image_data=your_image_data) se è memorizzato come un blob nel datastore.