2010-02-22 22 views
5

我目前正在制作一个类似Paint的WPF应用程序,现在在问题之前如何让我的用户能够保存创建的图像。通常我会将它们保存到磁盘中,但在此应用程序中,我有要求稍后允许用户从已创建的图像中创建更大的“图像”。这对于普通的文件系统方法来说仍然没有问题,但是用户也应该能够通过诸如类别/标签等特定属性来搜索图像,并且这对于普通的文件系统方法来说是困难的。C#:应用程序中的内部文件数据库

因此,我想到了一些选择,以实现我想要的,现在想知道您对这些方法的看法,或者如果您甚至知道更好的方法。该方法是:

  • 保存在应用程序的内部数据库的图像(通过SQLite的或类似的东西)
  • 图像保存为正常文件在文件系统中,并保持一个数据库中引用这些影像的应用程序(什么如果图像是由用户删除会发生什么?)
  • 图像保存为文件系统中的普通文件而无需额外的数据库应用(硬按类别等)

由于过滤它们!

回答

1

许多程序(例如Aperture,Lightroom,Expression Media等)将其图像存储到磁盘,然后在数据库中维护元数据缓存。这似乎是您的应用程序最明智的方法。

1

SQLITE将是我感觉不错的选择。版本3和BLOB完全支持,所以你可以想到SQLITE。

0

我会去的第二个方法,并使用FileSystemWatcher跟踪程序运行时的变化和启动时启动同步跟踪自上次应用是改变跑。

SqlLite或SQL Compact Editio都是本地数据库跟踪元数据的不错选择。

+1

当同时添加/删除大量文件时,FileSystemWatcher确实有一些限制,但是如果一次只添加一个或两个文件,它应该是正常的。 – ChrisF 2010-02-22 16:57:28

0

将图像存储在数据库当然是可以的。您可以实际存储图像流,因为它将保存到文件以节省空间。在读出时只需使用流式阅读器功能进行解压缩即可。

这没有其他两个解决方案的问题(应对删除文件,按类别查找文件)。

您可以通过根据您的类别创建文件夹和子文件夹来使用文件系统保存到文件,但这不允许您灵活地为每个文件设置多个类别。

相关问题