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;
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");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With