2015-12-17 1 views
0

Я импортировал PNG-файл в Visual Studio 2013. MIME-библиотека, которую мы используем, добавляет визуальные эффекты в HTML-почту с функцией, которая ожидает параметр байтового массива. Как получить объект, возвращенный ResourceManager в массив байтов?Как получить PNG как byte [] с помощью ResourceManager с C#

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

Когда я пытаюсь использовать метод .GetStream, ошибка говорит объект не является потоком, и использовать вместо .GetObject.

+1

PNG ресурс встраиваются как 'Image' объекта вместо этого. Если вы хотите выбить это в байт [], вы должны использовать Image.Save() в MemoryStream. Или переименуйте файл, прежде чем добавлять его в качестве ресурса, чтобы VS не знал, что это изображение. –

ответ

4

GetObject возвращает объект 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();