Images

Der Image Service der App Engine stellt Funktionalitäten zur Bildmanipulation zur Verfügung. Der Service akzeptiert Bilddaten direkt oder Blobstore Eigenschaften. Bilder können skaliert, rotiert, gespiegelt und beschnitten werden. Zusätzlich wird noch eine “I’m feeling lucky” Transformation geboten, die Farbe und Kontrast des Bildes optimiert.
Der Service unterstützt die Formate jpeg, png, gif (auch animiert), bmp, tiff und ico als Eingabeformat, als Ausgabeformat wird jpeg und png unterstützt.
Die Größe ist bei der Ein- und Ausgabe auf 1 Mbyte beschränkt.

Um den Service auch lokal nutzen zu können, muss die Python Image Library (PIL) installiert werden. Da ansonsten eine NotImplentedError Ausnahme ausgelöst wird, innerhalb der App Engine wird diese Asunahme nicht ausgelöst.

img = images.Image(photo.full_size_image)
img.resize(width=80, height=100)
img.im_feeling_lucky()
thumbnail = img.execute_transforms(output_encoding=images.JPEG)
self.response.headers['Content-Type'] = 'image/jpeg'
self.response.out.write(thumbnail)

Ein Bild was aus dem Datastore kommt wird dann über eine Klasse repräsentiert.

class Image(webapp.RequestHandler):
    def get(self):
        imgid = db.get(self.request.get("imgid"))
        if imgid.image:
            self.response.headers['Content-Type'] = "image/png"
            self.response.out.write(imgid.image)
        else:
            self.response.out.write("No image")

Innerhalb eines Templates können Bilder dann so dargestellt werden.

<img src="img?imgid={{ image.id }}" alt="No image" />

Leave a Reply