Estoy capturando imágenes de una cámara inteligente y recibiendo la matriz de bytes de la cámara a través de la programación del socket (la aplicación .NET es el cliente, la cámara es el servidor).El método Image.FromStream() devuelve la excepción de argumento no válido
El problema es que obtengo la excepción System.InvalidArgument en tiempo de ejecución.
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
MemoryStream ms = new MemoryStream(byteArray);
return Image.FromStream(ms, false, false);
/*last argument is supposed to turn Image data validation off*/
}
return null;
}
He buscado este problema en muchos foros y he probado las sugerencias de muchos expertos, pero nada ha ayudado.
No creo que haya ningún problema con la matriz de bytes como tal, porque cuando introduzco la misma matriz de bytes en mi aplicación de cliente VC++ MFC, obtengo la imagen. Pero esto de alguna manera no funciona en C# .NET.
¿Alguien me puede ayudar?
PS:
Otros métodos que he tratado de realizar la misma tarea son:
1.
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
MemoryStream ms = new MemoryStream();
ms.Write(byteArray, 0, byteArray.Length);
ms.Position = 0;
return Image.FromStream(ms, false, false);
}
return null;
}
2.
private Image byteArrayToImage(byte[] byteArray)
{
if(byteArray != null)
{
TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));
Bitmap b = (Bitmap)tc.ConvertFrom(byteArray);
return b;
}
return null;
}
Ninguno de los métodos anteriores trabajó. Amablemente ayuda.
¿Qué pasa si simplemente escribe el bytearray a un archivo en el disco? ¿El archivo puede abrirse con algo como photoshop? – Chris
lo has resuelto? Tengo el mismo problema – robob