使用Python存储和检索数据库中的图像

时间:2010-03-19 12:08:28

标签: python image-manipulation

我想将与每个人的个人资料相关的图像存储在数据库中并检索它们 请求时将其保存为.jpg文件 - 并将其显示给用户。

如何将存储在数据库中的图像数据渲染为图像并将其存储在本地?

3 个答案:

答案 0 :(得分:7)

在确定是将图像存储在数据库中还是存储在文件系统中时,这个StackOverflow问题是一个很好的问题

Storing Images in DB - Yea or Nay?

我也写过我博客上的问题

http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/03/images-in-databases-part-i-what-to-store.aspx

http://www.atalasoft.com/cs/blogs/loufranco/archive/2007/12/04/images-in-databases-part-ii-web-images-are-random-access.aspx

http://www.atalasoft.com/cs/blogs/loufranco/archive/2009/04/28/document-storage-database-blobs-or-the-filesystem.aspx

简短的回答是:如果图像很小且不是很多 - 数据库中的blob可能很好(更容易备份,控制访问,交易等)。但与文件系统相比,性能很差 - 这是一个权衡。大多数真正的应用程序(尤其是大型网站)都使用文件系统,但在某些情况下使用blob是完全合理的。

blob(或文件)只是编码数据(JPG) - 它是完全相同的字节流。在Web应用程序中,您将使用img标记 - 如果您正在构建桌面GUI,请查看它用于显示图像的组件。

如果您正在使用blob,并且需要在Web应用程序中显示,则img标记的src将设置为脚本/视图/ etc,其返回内容类型设置为图像的mime类型(例如image / jpeg)和blob的内容。

答案 1 :(得分:2)

标准方法是在上传图像时仅将图像转换为JPG一次。然后将其保存为文件系统上的常规文件。使用DB只存储保存图像的相对路径。

如果要渲染它,只需使用HTML:

<img src="/images/relative/path/to/my/image.jpg" />

并设置您的网络服务器(nginx,lighttpd,等等)以提供您将图像保存到虚拟目录/images

下的目录

答案 2 :(得分:1)

为什么不简单地将图像存储在文件系统上,只将它们的引用存储在数据库中。这样更优雅,不会消耗数据库的负载。

此外,您不必使用任何类型的二进制函数从数据库中读取它们,从而节省了内存和加载时间。

是否有一个非常具体的原因要将其存储在数据库中?

干杯