python - 使用 Python Base64 压缩 GAE Blob 图像?

标签 python image google-app-engine base64 blob

我正在将 20 个随机缩略图的 JSON 请求拉到 iPhone 应用程序。目前,我只是将图像缩略图 URL 包含在 JSON 数组中(见下文),然后 iPhone 会出去获取每张图像。这真的很慢。

原始 JSON 请求:

{
  "item_list": [
    {
      "item_name": "Item One", 
      "user_item_thumb": "http://localhost:8080/i/agpwaGluZ28tYXBwcg4LEghJdGVtVXNlchgPDA/67x67", 
    }, 
    {
      "item_name": "Item Two", 
      "user_item_thumb": "http://localhost:8080/i/agpwaGluZ28tYXBwcg4LEghJdGVtVXNlchgQDA/67x67", 
    }, 
    {
      "item_name": "Item Three", 
      "user_item_thumb": "http://localhost:8080/i/agpwaGluZ28tYXBwcg4LEghJdGVtVXNlchgRDA/67x67", 
    }
  ]
}

所以,我的想法是对图像数据使用 Base64,并将它们实际包含在 JSON 请求中,因此 iPhone 只需要一个请求而不是 21 个请求。合理?

那么,我该怎么做呢?
我尝试简单地将以下内容打印到 JSON,但这些是全尺寸图像,我需要推送缩略图的 Base64 版本。

不工作:

f = item.image
f_enc = f.encode('base64')

这就是我目前获得大拇指的方式,只是即时创建它们。

http://localhost:8080/i/agpwaGluZ28tYXBwcg4LEghJdGVtVXNlchgSDA/67x67

这就是呈现上述图像请求的内容:

class Image(webapp.RequestHandler):
    def get(self, image_id):
        user = db.get(image_id)

        if user.image:
            picture = user.image
            self.response.headers['Content-Type'] = "image/png"
            self.response.out.write(picture)
        else:
            self.response.out.write("No image")

任何想法都会很棒。
如果有更好的方法来做到这一点,我会洗耳恭听。

我的问题:
- iPhone 在这 20 张图片中每张图片的拉取速度都很慢
- 图片是随机的,所以缓存可能不是一个选项。
- Base64 是要走的路吗?

谢谢,
丹尼

最佳答案

是的,直接使用 base64 编码图像似乎是一种合理的方法,因为它们只是缩略图。这类似于出于同样的原因在网页中使用 data: URL。

它应该像调用您在常规代码中执行的相同图像 API 转换一样简单以生成缩略图,然后将生成的输出序列化为 base64。您可能希望将结果缓存在内存缓存中 - 在两个处理程序中 - 以防止对图像 API 的冗余调用。或者,您可以在首次上传图像时计算缩略图,并将其与全尺寸图像一起存储。

关于python - 使用 Python Base64 压缩 GAE Blob 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5535092/

相关文章:

image - glTexImage2D 与宽度/高度相关的段错误

android - GoogleJsonResponseException : 500 Internal Server Error

python - 如何在遍历 pandas 数据框时创建新列并插入行值

python - 如何使用 distutils 处理配置文件以尊重 unixen 的 FHS?

python - 如何从默认的 Django 模型重命名模型字段?

python - 如何使用 python 增加 Mongodb 的连接池大小

css - 将一行内联图像居中

html - 使用CSS将图像位置链接到另一个图像

Django + Pydev/Eclipse + Google App Engine - 可能吗?

python - 如何将 AppEnginePlatformWarning 记录为警告而不是错误