使用Django服务动态生成的图片
我该如何在Django中提供一个动态生成的图片呢?
我有一个HTML标签
<html>
...
<img src="images/dynamic_chart.png" />
...
</html>
它连接到这个请求处理器,这个处理器会创建一个保存在内存中的图片
def chart(request):
img = Image.new("RGB", (300,300), "#FFFFFF")
data = [(i,randint(100,200)) for i in range(0,300,10)]
draw = ImageDraw.Draw(img)
draw.polygon(data, fill="#000000")
# now what?
return HttpResponse(output)
我还打算把请求改成AJAX,并添加某种缓存机制,但我理解这部分应该不会影响解决方案的其他部分。
4 个回答
3
我在寻找解决同样问题的方法。
对我来说,这个简单的方法效果很好:
from django.http import FileResponse
def dyn_view(request):
response = FileResponse(open("image.png","rb"))
return response
3
我自己对Django也还比较陌生。虽然在Django里找不到相关的东西,但我在Google Code上发现了一个项目,可能对你有帮助:
31
我猜你是在使用PIL(Python图像库)。你需要把最后一行换成这个(比如说,如果你想提供一个PNG格式的图片):
response = HttpResponse(mimetype="image/png")
img.save(response, "PNG")
return response
想了解更多信息,可以查看这里。