2012-02-28 29 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。

相关问题