我想将与每个人的个人资料相关的图像存储在数据库中并检索它们 请求时将其保存为.jpg文件 - 并将其显示给用户。
如何将存储在数据库中的图像数据渲染为图像并将其存储在本地?
答案 0 :(得分:7)
在确定是将图像存储在数据库中还是存储在文件系统中时,这个StackOverflow问题是一个很好的问题
Storing Images in DB - Yea or Nay?
我也写过我博客上的问题
简短的回答是:如果图像很小且不是很多 - 数据库中的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)
为什么不简单地将图像存储在文件系统上,只将它们的引用存储在数据库中。这样更优雅,不会消耗数据库的负载。
此外,您不必使用任何类型的二进制函数从数据库中读取它们,从而节省了内存和加载时间。
是否有一个非常具体的原因要将其存储在数据库中?
干杯