2010-02-22 54 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

將圖像存儲在數據庫當然是可以的。您可以實際存儲圖像流,因爲它將保存到文件以節省空間。在讀出時只需使用流式閱讀器功能進行解壓縮即可。

這沒有其他兩個解決方案的問題(應對刪除文件,按類別查找文件)。

您可以通過根據您的類別創建文件夾和子文件夾來使用文件系統保存到文件,但這不允許您靈活地爲每個文件設置多個類別。

相關問題