2012-02-28 15 views
8

Agregué la imagen como archivo y establecí el tipo como recurso (vea la captura de pantalla) ¿Cómo lo saco como una matriz de bytes sin usar archivos de resx, etc.?cargar el recurso como conjunto de bytes programáticamente

enter image description here

+1

No creo que haya buscado en la web antes de preguntar. http://support.microsoft.com/kb/319292 – Oded

+0

Sí, pero no muestra cómo obtener 'byte []' – katit

Respuesta

9

El proceso se describe en How to embed and access resources by using Visual C#.

Esencialmente requiere el uso de la reflexión, utilizando la clase Assembly.

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

Ver How to convert an Stream into a byte[] in C#? para más detalles de cómo conseguir un byte[] de un Stream.

+0

Tuve que escribir todo el espacio de nombres para que funcione. Si tiene dudas sobre los recursos que tiene, llame a currentAssembly.GetManifestResourceNames() –

1

Si se trata de una página web que podría base64 codificar la imagen y añadirlo como el src de un elemento image o en una definición de background-image en el CSS:

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

Nota Esto eliminará la dependencia de tener el archivo almacenado en el servidor, que puede se bueno o malo

7

¡Las cosas son incluso más simples que los artículos marke como respuesta!

Si hace clic en el archivo de recursos y ve la ventana de propiedades, puede establecer el Tipo de archivo como binario. A continuación, puede acceder a la bytearray en código con un simple

var byteArray = Properties.Resources.FileName;

donde filename es el nombre de su recurso.

+2

Utilizando Visual Studio Express 2010 no pude cambiar el tipo de recurso PNG, pero cambié el nombre del archivo a .bin antes de agregarlo como recurso y eso funcionó maravillosamente! – lapo

+0

No veo ninguna opción para cambiar el tipo de archivo en Visual Studio 2017 –

+0

¿Estás seguro de que estás buscando en la ventana Propiedades? Acabo de verificar mi instalación de VS2017 y definitivamente está allí. –

3

Si usted no utiliza la imagen directamente (es decir: de un control si su proyecto es una aplicación de Windows), entonces usted podría:

1- cambiar la extensión del archivo (es decir: * .jpg.data)

2- añadir la "imagen" a un archivo de recursos RESX

3- acceso a la matriz de bytes usando: Resources.PathToImages.ResxFileName.ImageName

Nota: si se agrega la imagen con la extensión sin cambios la RESX el compilador crea una propiedad Bitmap en lugar de un byte [] p Roperty.

Cuestiones relacionadas