使用Python Base64压缩GAE Blob图像?

2024-04-27 20:58:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我把20个随机缩略图的JSON请求拉到一个iPhone应用程序中。目前,我只需在JSON数组中包含图像拇指url(见下文),然后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

这是呈现上述图像请求的原因:

^{pr2}$

任何想法都会令人惊叹。
如果有更好的办法,我洗耳恭听。在

我的问题:
-iPhone在这20张图片中的每一张都很慢
-图像是随机的,所以缓存可能不是一个选项。
-Base64是正确的吗?在

谢谢,
丹尼


Tags: name图像json应用程序localhosthttp图片item
2条回答

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

这样做应该很简单,只需调用与常规代码中相同的imagesapi转换来生成缩略图,然后将结果输出序列化为base64。您可能希望将结果缓存到memcache中(在两个处理程序中),以防止对imagesapi的重复调用。或者,您可以在第一次上载图像时计算缩略图,并将其与全尺寸图像一起存储。在

也许你只需要打电话给read()

encoded = item.image.read().encode('base64')

如果你要处理任何大尺寸的图像,你会希望分块编码(也就是说,read(4096)多次,对每一块进行编码)。在

相关问题 更多 >