簡體   English   中英

如何在c#中以字節數組的形式獲取資源?

[英]How to get resource as byte array in c#?

我從項目設置 -> 資源向我的 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");

但是我在項目資源管理器的資源文件夾中看到了我的圖像。
在此處輸入圖片說明

誰能告訴那里有什么問題?
在此處輸入圖片說明

您需要將文件TestImg.png設置為“嵌入式資源”。 資源名稱將是Resources/TestImg.png

您可以使用Properties.Resources.TestImg訪問圖像。

這有效:

    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");

您可以編輯 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>

to(替換文件名后的類型和程序集定義):

  <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以字節數組的形式訪問圖像。 我不知道這是否可以在不手動編輯資源文件的情況下完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM