Store Image in .resx as byte[] rather than Bitmap

瘦欲@ 提交于 2019-12-09 03:39:05

问题


Slightly daft, but...

Is there a way to prevent Visual Studio treating a .jpg file in a .resx as a Bitmap so that I can access a byte[] property for the resource instead?

I just want:

byte[] myImage = My.Resources.MyImage;

回答1:


Try using an "Embedded Resource" instead

So lets say you have a jpg "Foo.jpg" in ClassLibrary1. Set the "Build Action" to "Embedded Resource".

Then use this code to get the bytes

byte[] GetBytes()
{
    var assembly = GetType().Assembly;
    using (var stream = assembly.GetManifestResourceStream("ClassLibrary1.Foo.jpg"))
    {
        var buffer = new byte[stream.Length];
        stream.Read(buffer, 0, (int) stream.Length);
        return buffer;
    }
}

Or, alternatively, if you want a more re-usable method

byte[] GetBytes(string resourceName)
{
    var assembly = GetType().Assembly;
    var fullResourceName = string.Concat(assembly.GetName().Name, ".", resourceName);
    using (var stream = assembly.GetManifestResourceStream(fullResourceName))
    {
        var buffer = new byte[stream.Length];
        stream.Read(buffer, 0, (int) stream.Length);
        return buffer;
    }
}

and call

 var bytes = GetBytes("Foo.jpg");



回答2:


Alternatively, right click on your .resx file and click "View Code".

Edit the XML resource item to use System.Byte[] like this:

<data name="nomap" type="System.Resources.ResXFileRef, System.Windows.Forms">
   <value>..\Resources\nomap.png;System.Byte[]</value>
</data>

Save and you should be able to use Byte[] instead of Bitmap




回答3:


Give the jpeg file a different extension, such as "myfile.jpeg.bin". Visual studio should then treat it as binary file and the generated designer code will return byte[].




回答4:


No way I know of, though you can redefine the generated code in .designer.cs to return not a bitmap but byte array from the Bitmap contained.



来源:https://stackoverflow.com/questions/9901518/store-image-in-resx-as-byte-rather-than-bitmap

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!