2011-07-18 31 views
0

我有一個C#應用程序,我需要保留在她的照片,但我不能使用資源(resx)。 那麼有沒有其他方法?如何存儲圖像不使用資源

更新: 答案: 我的圖片是靜態的,爲了這個,我將使用嵌入的資源

How create embedded resource

+0

數據庫?目錄? – LarsTech

+0

爲什麼你不能使用資源? – svick

+0

@ LarsTech,數據庫 - 否,目錄 - 現在,如果刪除圖片,它會造成不良影響。 – Mediator

回答

1

這是一組動態畫面或靜態的?如果是靜態的,您可以將資源文件編譯爲獨立的程序集,然後將其消耗。如果是動態的,則需要某種類型的數據存儲來存儲文件。如果文件系統不起作用,則數據庫是一個選項。

+0

「將資源文件編譯爲單獨的程序集」 - 這是怎麼回事? MonoDevelop無法自動完成。 – Mediator

+0

確保Mono中有一個資源管理器:http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspx。只要它在那裏,就可以使用csc.exe來編譯這些文件(http://msdn.microsoft.com/zh-cn/library/ms379563(v=vs.80).aspx)。我將不得不檢查.resx是否有開源工具,或者如果您必須從Visual Studio或Express SKU開始設置RESX來編譯它。你的OP中沒有單聲道。 –

0

想到一個想法,但如果可能的話我可能不會使用它:將圖像作爲字節數組放入您的代碼中。

您可以爲圖像創建byte[]字段並在代碼中初始化它們。您可以使用CodeDOM或Reflection.Emit動態生成代碼。

0

如果圖像不是太大,您可以將它們編碼爲代碼中的巨大常量數組。 這不是非常優雅的解決方案,但如果沒有文件,沒有資源,沒有數據庫,還有什麼?

2

如上所述,這取決於它們是靜態還是動態。如果是靜態的,你可以使用嵌入式資源(而不是像其他人提到的那樣將它們編碼爲常量字節數組)。如果是動態的,可以將它們存儲在獨立的存儲中。

0

鑑於您給我們的選擇,這不會讓我們有太多的工作。根據圖像大小,您可以使用this website將圖像編碼爲Base64,然後將它們存儲在string中。然後,您可以使用System.Convert.FromBase64String將它們從base64轉換回字節數組。

另一種選擇是將您的圖像存儲在Web服務器上,並在服務器上創建一個Web服務,以便使用它來檢索圖像。

雖然這些方法並不好。第一個想法是需要消耗更多的內存,然後第二種方法如果你考慮一下就太荒謬了。使用數據庫要好得多。您可以使用數據庫,例如MySQL,這些數據庫可以與Windows和Mono一起使用。您也可以使用SQLite database,這樣數據庫便於攜帶。將這個存儲在數據庫中確實沒有什麼好的理由。

0

我會繼續努力:通過使用提供安全加密的任何單音ZIP庫,您可以保存在磁盤上。

郵編:因爲你可能會節省空間

加密:如果您需要保存一些私人數據(家庭圖片,文檔...)

可以將它們根據自己的應用程序邏輯,或單獨保存它們,還附加了一些元文件,如果您還需要提供一些圖像信息。

微軟使用這種「技術」,例如爲DOCX文件。嘗試將DOCX文件的擴展名更改爲ZIP並將其解壓縮到文件夾中。你會看到內容。

問候。