我从项目设置中将图像添加到我的c#项目 - >资源
如何在运行时获取此图像?
我试着这个:
public byte[] GetResource(string ResourceName)
{
System.Reflection.Assembly asm = Assembly.GetEntryAssembly();
// list all resources in assembly - for test
string[] names = asm.GetManifestResourceNames(); //even here my TestImg.png is not presented
System.IO.Stream stream = asm.GetManifestResourceStream(ResourceName); //this return null of course
byte[] data = new byte[stream.Length];
stream.Read(data, 0, (int)stream.Length);
return data;
}
我用这种方式调用这个函数:
byte[] data = GetResource("TestImg.png");
但是我在项目浏览器的Resources文件夹中看到了我的图像
有人能说出那里有什么问题吗?
答案 0 :(得分:7)
您需要将文件TestImg.png
设置为“嵌入式资源”。然后,资源名称为Resources/TestImg.png
。
答案 1 :(得分:2)
您可以使用Properties.Resources.TestImg
访问该图片。
答案 2 :(得分:2)
这有效:
var info = Application.GetResourceStream(uri);
var memoryStream = new MemoryStream();
info.Stream.CopyTo(memoryStream);
return memoryStream.ToArray();
另外,如果您想将图像保存到驱动器中:
var b =
new Bitmap(namespace.Properties.Resources.image_resouce_name);
b.Save("FILE LOCATION");
答案 3 :(得分:0)
您可以编辑Resources.resx文件并更改:
<data name="ResourceKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Image.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
到(在文件名后替换类型和程序集定义):
<data name="ResourceKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Image.jpg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
现在,您可以使用Properties.Resources.ResourceKey
作为字节数组访问图像。我不知道如果不手动编辑资源文件就可以做到这一点。