数据库或项目文件夹中的图像作为资源

Posted

技术标签:

【中文标题】数据库或项目文件夹中的图像作为资源【英文标题】:Images in database or in project folder as resources 【发布时间】:2012-02-21 19:30:07 【问题描述】:

我正在创建应用程序,其中我将拥有用户无法编辑的数据库。它只有数据并向用户显示。我发现我不必使用本地存储,我只需将数据库添加到项目中,它是只读的。所以我做到了,一切都很好。现在我想将图像添加到我的应用程序中,但我不确定什么是更好的方法。我可以将每个图像添加到文件夹中,在图像的数据库存储路径中,这非常简单,现在可以做到。或者我发现我可以将图像作为图像(字节 [])存储在数据库中。什么是更好的?数据库中的图像会更小吗?加载图像会更快吗?如果数据库中的图像是更好的解决方案,我可以轻松地将图像添加到现有数据库吗?在winforms中是否有任何文章可以做到这一点?谢谢

编辑: 我很高兴我的问题有这么多的答案和意见。我想更多地解释我的需求。我的应用程序应该有大约 150 张图片,图片的大小应该是 150px 和 100px。我想应用程序可以在没有互联网连接的情况下工作。它可以连接更新,但仅此而已。再次感谢所有意见:)

【问题讨论】:

如果您不需要,请不要将图像存储在服务器上。与直接在设备上保存相比,将内容上传到网络速度较慢 【参考方案1】:

对于我们的应用程序,我们发现混合方法效果最好。我们将 SQL 环境配置为支持FILESTREAM,然后导入我们所有的图像。这使我们可以灵活地将图像保存在 sql 中,同时仍将实际图像存储到磁盘。它是一个快速的解决方案,可能也适合您。

【讨论】:

【参考方案2】:

关于你把图片放在哪里有很多“如果”、“但是”和“也许”,我认为没有正确或错误的方式。

值得一提的是,如果应用程序是具有高可用性的业务关键型应用程序,我会将它们存储在数据库中,因为可以使用其余数据进行备份。可以镜像数据库等,因此将所有图像视为“数据”可能是有益的。此外,如果事情变得很大并且使用了网络农场和负载平衡器等,那么当图像位于一个地方时会有所帮助。

对我来说,我会选择数据库。但这完全取决于您的应用程序的规模。

【讨论】:

我很高兴所有的答案。经过思考并选择数据库,我选择了您的答案。谢谢【参考方案3】:

我个人会将所有图像存储在独立存储中,并在数据库中存储图像的路径。

我会将所有图像作为字节[] 存储在隔离存储中

【讨论】:

【参考方案4】:

这里的答案没有错,但这实际上取决于您要完成的工作以及当前的设置方式。

最好使用静态图像的内容交付网络来减轻网络服务器的负载。

您可以根据自己的喜好从数据库或文件结构中作为资源文件提供服务。如果图像是静态的,请不要忘记添加适当的缓存,这对于静态内容来说是遥不可及的。

如果您要渲染图像,我肯定会将图像保存在数据库中,以便可以从任意数量的 Web 服务器访问图像。

如果您愿意,可以通过将最近使用的图像保存在内存中或存储在本地文件系统中来进一步开发,这样您就不必每次都从数据库中获取文件。

【讨论】:

【参考方案5】:

网络文件夹。还可以考虑从 Amazon S3 等云服务器远程加载它们,以释放对您自己服务器的访问权限

【讨论】:

【参考方案6】:

最好的选择是将图像存储在网络文件夹中,如果将它们保存在数据库中,则将浪费时间从数据库中检索它们,因为这需要更多时间

【讨论】:

我不同意。上网并不快

以上是关于数据库或项目文件夹中的图像作为资源的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC 中从二进制文件加载图像

将图像插入项目中,而不将它们放在 Resource 文件夹中。(AppleScript 应用程序)

在 Android 中将资产或原始文件或资源文件作为 File 对象读取

将图像从项目资源复制到Objective-C中的文档文件夹时出现问题

在运行作为 JAR 存档分发的项目时加载图像等资源

QT应用程序 - 替换嵌入式资源