My favorites | 中文(简体) | Sign in

概述

通过使用 App Engine 图像服务,您的应用程序可以使用与 Picasa 网络相册相同的可扩展基础架构来控制图像。采用该 API,您可以对 JPEG、PNG、GIF(包括动画)、BMP、TIFF 和 ICO 格式的图像进行缩放、裁剪、旋转和翻转,并使用修正照片的自动算法调整它们的对比度和颜色级别。

可以在图像上执行转换以生成缩略图,也可以在应用程序管理课程中执行其他典型操作。

当前可用的转换有:

缩放

以相同的纵横比缩放图像。如果同时指定了宽度和高度,当调整照片大小时会使用两个值中限制性较强的一个。

旋转

沿顺时针方向按指定度数旋转图像。

水平翻转

水平翻转图像。

垂直翻转

垂直翻转图像。

裁剪

根据您传递给函数的边界框裁剪图像。

手气不错。

[手气不错] 转换功能可增强图像的暗度和亮度,并可将颜色和对比度调整到最佳水平。

注意:为了能在您的本地环境中使用图像 API,您必须先下载和安装 PIL(Python 映像库)。PIL 在 App Engine 中不可用,它只用作您本地环境中的图像 API 的存根。App Engine 上只能使用图像 API 中提供的转换。

from google.appengine.api import images

from google.appengine.ext import db
from google.appengine.ext import webapp

class Photo(db.Model):
  title = db.StringProperty()
  full_size_image = db.BlobProperty()

class Thumbnailer(webapp.RequestHandler):
  def get(self):
    if self.request.get("id"):
      photo = Photo.get_by_id(self.request.get("id")) 

      if photo:
        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)
        return

    # Either "id" wasn't provided, or there was no image with that ID
    # in the datastore.
    self.error(404)