以编程方式将资源加载为字节数组

时间:2012-02-28 18:37:20

标签: c# .net embedded-resource

我将图片添加为文件并将类型设置为资源(参见屏幕截图) 如何在不使用resx文件等的情况下将其作为字节数组拉出来?

enter image description here

4 个答案:

答案 0 :(得分:10)

事情甚至比项目标记为答案更简单!

如果单击资源中的文件并查看属性窗口,则可以将文件类型设置为二进制。 然后,您可以使用简单的

访问代码中的bytearray

var byteArray = Properties.Resources.FileName;

其中FileName是资源的名称。

答案 1 :(得分:9)

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

基本上,它需要使用Assembly类来使用反射。

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

有关如何从byte[]获取Stream的详细信息,请参阅How to convert an Stream into a byte[] in C#?

答案 2 :(得分:6)

如果您不直接使用该图像(即:如果您的项目是Windows应用程序,则来自控件),那么您可以:

1-更改文件扩展名(即:* .jpg.data)

2-将“image”添加到资源文件RESX

3-使用以下命令访问字节数组:Resources.PathToImages.ResxFileName.ImageName

注意:如果添加扩展名不变的图像,RESX编译器会创建一个Bitmap属性而不是byte []属性。

答案 3 :(得分:1)

如果是针对某个网站,您可以base64对该图片进行编码,并将其添加为src元素的imagebackground-image定义中的CSS 1}}:

http://www.motobit.com/util/base64-decoder-encoder.asp

注意 这将消除将文件存储在服务器上的依赖性,这可能是好的还是坏的。