使用谷歌应用引擎渲染动态图像

时间:2010-07-14 11:01:42

标签: python google-app-engine

我正在开发一个Google应用引擎项目,我已在数据存储区中保存了一些图像。 现在我必须调整这些图像的大小并将它们渲染到模板中。我已成功获取图像,但我没有得到,如何使用其他数据字典将它们呈现给模板。我正在使用带GAE的App引擎补丁。

以下是我在视图中使用的代码段:

def getData(request,key):
forum = Topic.get(key)
picData = forum.creator.portfolio_set
response = ''
if picData:
    picture = picData[0].userpic
    response = HttpResponse(picture, mimetype="image/jpeg")
    #response['Content-Type'] = 'image/jpeg'
    response['Content-Disposition'] = 'inline'
return render_to_response(request,"forum.html",{"forum":forum,"pic":response })

现在,我能够在论坛变量中呈现数据,但却无法获得如何渲染与之关联的图像。我应该在我的视图文件中修改什么,以及我应该在模板中使用什么来显示视图文件呈现的图像。

请建议。

提前致谢。

1 个答案:

答案 0 :(得分:2)

解决方案1:

添加通用视图以获取图片,例如/ images / image-id应返回该ID的图像

  

def get_image(request,image_id):       ....

picture = get from id
return HttpResponse(picture, mimetype="image/jpeg")

现在在forum.html模板中使用图片网址,就像使用任何普通图片网址一样。

解决方案2:您可以使用data:image直接嵌入图片,请参阅http://en.wikipedia.org/wiki/Data_URI_scheme

所以试试这个

import base64

def getData(request,key):
    forum = Topic.get(key)
    picData = forum.creator.portfolio_set
    pictureSrc = ''
    if picData:
        picture = picData[0].userpic
        pictureSrc = "data:image;base64,%s"%base64.b64encode(picture)

    return render_to_response(request,"forum.html",{"forum":forum,"pic":pictureSrc })