загрузить ресурс как байтовый массив программно - PullRequest
12 голосов
/ 28 февраля 2012

Я добавил изображение в виде файла и установил тип в качестве ресурса (см. Скриншот). Как вытащить его как массив байтов без использования файлов resx и т. Д.?

enter image description here

Ответы [ 4 ]

10 голосов
/ 14 марта 2013

Все даже проще, чем элемент помечается как ответ!

Если вы щелкнете по файлу в ресурсах и откроете окно свойств, вы можете установить тип файла в двоичный.Затем вы можете получить доступ к байтовому массиву в коде с помощью простого

var byteArray = Properties.Resources.FileName;

, где FileName - это имя вашего ресурса.

9 голосов
/ 28 февраля 2012

Процесс описан в Как встраивать и получать доступ к ресурсам с помощью Visual C # .

По существу это требует использования отражения, используя класс Assembly.

Stream imageStream = 
            currentAssembly.GetManifestResourceStream("Resources.logo_foot.png");

См. Как преобразовать поток в байт [] в C #? , чтобы узнать, как получить byte[] из Stream.

6 голосов
/ 11 декабря 2013

Если вы не используете изображение напрямую (т. Е. Из элемента управления, если ваш проект является приложением Windows), тогда вы можете:

1 - изменить расширение файла (т. Е. * .Jpg.data)

2 - добавить «образ» в файл ресурсов RESX

3 - получить доступ к байтовому массиву, используя: Resources.PathToImages.ResxFileName.ImageName

Примечание: если вы добавляете изображение с неизменным расширением, компилятор RESX создает свойство Bitmap вместо свойства byte [].

1 голос
/ 28 февраля 2012

Если это для веб-сайта, вы можете base64 кодировать изображение и добавить его в качестве src элемента image или в определении background-image в CSS:

http://www.motobit.com/util/base64-decoder-encoder.asp

Примечание Это устранит зависимость наличия файла на сервере, что может быть как хорошим, так и плохим.

...