Store Image in .resx as byte[] rather than Bitmap
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
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");
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[].