如何在 C# 中使用 ResourceManager 将 PNG 作为 byte[]

How to get PNG as byte[] using ResourceManager with C#

我将 PNG 文件导入 Visual Studio 2013。我们正在使用的 MIME 邮件库使用需要字节数组参数的函数向 HTML 邮件添加视觉效果。如何将ResourceManager返回的对象变成字节数组?

ResourceManager rm;
rm = new ResourceManager("Foo.Properties.Resources", typeof(MYFORM).Assembly);
var obj = rm.GetObject("Logo");

当我尝试使用 .GetStream 方法时,错误提示该对象不是流,因此请改用 .GetObject

如果文件是图像,GetObject 将 return 一个 System.Drawing.Image 对象

Image img = (Image)rm.GetObject("Logo")

使用 Image 对象可以直接将其保存到任何 System.IO.Stream 对象

MemoryStream stream = new MemoryStream();
img.Save(stream, ImageFormat.Png);

现在您可以使用 Stream.ToArray

复制字节
byte[] bytes = stream.ToArray();

或者直接保存到文件

img.Save(Application.StartupPath + "/testImage.jpg")

不要忘记关闭任何使用过的流

Stream.Close();