Я добавил изображение как файл и задал тип как ресурс (см. Снимок экрана) Как вытащить его как массив байтов без использования файлов resx и т. Д.?загрузить ресурс в качестве байтового массива программно
ответ
Процесс описан в How to embed and access resources by using Visual C#.
По существу это требует отражения, используя класс Assembly
.
Stream imageStream =
currentAssembly.GetManifestResourceStream("Resources.logo_foot.png");
См How to convert an Stream into a byte[] in C#? подробную информацию о том, как получить byte[]
от Stream
.
Мне пришлось набирать все пространство имен, чтобы заставить его работать. Если у вас есть сомнения, какие у вас ресурсы, вызовите currentAssembly.GetManifestResourceNames() –
Если это для веб-сайта вы можете base64
закодировать изображение и добавить его в качестве src
в качестве image
элемента или в background-image
определения в CSS
:
http://www.motobit.com/util/base64-decoder-encoder.asp
Примечание Это устранит зависимость наличия файла, хранящегося на сервере, что может быть хорошим или плохим.
Вещи еще проще, чем знаки товара в качестве ответа!
Если вы щелкните по файлу в ресурсах и просмотрите окно свойств, вы можете установить тип файла в двоичный. Тогда вы можете получить доступ к ByteArray в коде с простой
var byteArray = Properties.Resources.FileName;
где FileName это имя вашего ресурса.
Использование Visual Studio Express 2010 Мне не удалось изменить тип ресурса PNG, но я переименовал файл в .bin перед добавлением в качестве ресурса и это сработало чудесно! – lapo
Я не вижу возможности изменить тип файла в Visual Studio 2017 –
Вы уверены, что ищете в окне свойств? Я только что проверил в своей установке VS2017, и это определенно есть. –
Если вы не используете изображение непосредственно (то есть: от контроля, если ваш проект является для Windows App), то вы можете:
1- изменить расширение файла (то есть: * .jpg.data)
2 добавить «образ» в файл ресурсов RESX
3- доступа массив с помощью: Resources.PathToImages.ResxFileName.ImageName
Примечание: если вы добавляете изображение с расширением неизменным Resx компилятор создает свойство Bitmap вместо байта [] p roperty.
Я не думаю, что вы искали в Интернете, прежде чем спрашивать. http://support.microsoft.com/kb/319292 – Oded
Да, но он не показывает, как получить 'byte []' – katit