如何在Django中提供动态图片?

时间:2019-08-09 02:53:00

标签: django

我有一个Django应用程序,该应用程序从电子邮件中提取图像并创建要在视图中显示的缩略图。由于这些不是静态文件,也不是用户上传的文件,因此我应该将它们存储在哪里,以及如何获得可以放置在src标记中的URL,以便客户端浏览器可以下载它?

我希望能够使用如下代码使视图显示来自模板的图像:

<img src="{{ path }}" />

其中路径的计算结果为图像文件的URL。

我是Django的新手,所以我确定我肯定缺少明显的东西。

1 个答案:

答案 0 :(得分:0)

您需要将缩略图“保存”为“文件”。不过,这不必通过磁盘上的文件来完成。

阅读完电子邮件并提取图像后,假定该图像已附加到电子邮件中,而不是HTML链接。您附加的图像现在已在内存中。除了将图像保存到内存中的io.BytesIO()流之外,您将保存图像的方式与保存到磁盘的方式完全相同,然后在路由中将其作为“ image / png”返回,并将其用作img标签的路径。

如果对许多图像执行此操作,则可能会遇到问题,因为所有图像都存储在内存中。将缩略图保存到静态目录中,然后链接到该目录,可能会有更好的性能。如果这样做,您可以定期清理缩略图。