Appengine blobstore,存储全尺寸图像和小图像?

时间:2013-05-10 19:23:28

标签: python google-app-engine web

我目前正在Appengine中创建一个图像共享网站,它主要是我想要它的工作方式,但有时我想要一个小版本的图像(缩略图) - 目前我正在用HTML缩小它,但是当完全没有必要时,浏览器仍会加载完整的(最多32MB图像)。如何显示质量较低,图像较小的图像以节省带宽?

提供图像的代码。这是'mysite.com/view'

class ViewPhotoHandler(blobstore_handlers.BlobstoreDownloadHandler):
    def get(self, photo_key):
        if not blobstore.get(photo_key):
            self.error(404)
        else:
            self.send_blob(photo_key)

请求图片的代码。

p.blob_key是一个字符串

link = '/view/%s' % p.blob_key
self.response.write('<img src="' + link + '" alt="Image" height="50" width="50">')

所以,一切都运行得如何,但在请求小版本的图像时浪费了太多的带宽。

关于如何解决这个问题的任何想法? 感谢

1 个答案:

答案 0 :(得分:2)

使用images包中的get_serving_url功能

from google.appengine.api.images import get_serving_url

url = get_serving_url(blob_key, size=None, crop=False, secure_url=None)

无论是否裁剪,您都可以调整图像大小。

图片API文档:https://developers.google.com/appengine/docs/python/images/functions

注意:您的处理程序现在不需要是BlobstoreDownloadHandler的子类。

编辑:处理错误。

来自documentation:Images API在本地使用Python Imaging Library(PIL)在本地计算机上测试期间转换图像。您需要下载PIL模块并将其安装在本地计算机上,以便将SDK与SDK配合使用。