2010-03-19 117 views
2

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

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

+1

您是否将图像映射到数据库?试图准确地看到你在这个过程中的位置......什么数据库? – curtisk 2010-03-19 12:12:17

回答

6

这下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

简短的回答是:如果图像很小,不会有很多人 - DB中的blob可能没问题(更容易备份,控制访问,事务等)。但是与文件系统相比,性能很差 - 这是一个折衷。大多数真正的应用程序(特别是大型网站)使用文件系统,但在某些情况下使用blob是完全合理的。

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

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

1

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

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

是否有一个非常具体的原因,你想将它存储在数据库?

干杯

2

标准的方法是将图像转换成JPG格式,只有一次,当它被上传。然后将其保存为文件系统上的常规文件。使用数据库只是为了存储保存图像的相对路径。

当你想渲染它只是使用HTML:

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

和设置您的Web服务器(nginx的,lighttpd的,等等)来服务目录将影像保存到虚拟目录/images

相关问题