使用谷歌应用引擎渲染动态图像
我正在做一个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 })