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

1 投票
1 回答
880 浏览
提问于 2025-04-16 01:16

我正在做一个Google应用引擎的项目,里面保存了一些图片在数据存储中。现在我需要调整这些图片的大小,并把它们显示在模板里。我已经成功获取了这些图片,但不知道怎么把它们和其他数据一起渲染到模板中。我正在使用GAE的应用引擎补丁。

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

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 })

现在,我可以在forum变量中渲染数据,但不知道怎么把和它关联的图片渲染出来。我应该在视图文件中修改什么,模板中又应该用什么来显示由视图文件渲染的图片。

请给点建议。

提前谢谢你。

1 个回答

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 的方式嵌入图片,具体可以参考 这个链接

所以可以试试这个:

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 })

撰写回答