2012-02-28 52 views
8

我將圖像添加爲文件並將類型設置爲資源(請參見屏幕截圖) 如何在不使用resx文件等情況下將其作爲字節數組拉出?以編程方式將資源加載爲字節數組

enter image description here

+1

我不認爲你在詢問之前搜索過網頁。 http://support.microsoft.com/kb/319292 – Oded 2012-02-28 18:44:03

+0

是的,但它不顯示如何獲得'byte []' – katit 2012-02-28 18:53:14

回答

9

該過程在How to embed and access resources by using Visual C#中描述。

本質上它需要使用反射,使用Assembly類。

Stream imageStream = 
      currentAssembly.GetManifestResourceStream("Resources.logo_foot.png"); 

對於如何從Stream得到byte[]詳見How to convert an Stream into a byte[] in C#?

+0

我不得不鍵入整個命名空間才能使它工作。如果您不確定您擁有哪些資源,請致電currentAssembly.GetManifestResourceNames() – 2013-04-09 13:28:27

7

事情甚至比標記作爲答案更簡單!

如果您單擊資源中的文件並查看屬性窗口,則可以將文件類型設置爲二進制。 然後你可以用一個簡單的

var byteArray = Properties.Resources.FileName;

其中FileName是你的資源的名稱訪問ByteArray的代碼。

+2

使用Visual Studio Express 2010我無法更改PNG資源的類型,但在添加資源之前將其重命名爲.bin這工作非常好! – lapo 2013-12-03 13:37:42

+0

我不能看到任何選項來更改Visual Studio 2017中的文件類型 – 2017-08-18 07:48:20

+0

您確定您正在尋找屬性窗口嗎?我剛剛檢查了我的VS2017安裝,它絕對存在。 – 2017-09-05 13:36:46

3

如果你不直接使用圖像(即:從如果你的項目是一個Windows應用程序的控制),那麼你可以:

1-更改文件擴展名(如:* .jpg.data)

2-「形象」添加到資源文件RESX

3-訪問使用字節數組:Resources.PathToImages.ResxFileName.ImageName

注:如果您使用擴展不變RESX添加圖像編譯器創建一個Bitmap屬性而不是一個byte [] p roperty。

相關問題