sto catturare le immagini da un sensore fotocamera intelligente e ricevere l'array di byte dalla telecamera attraverso la programmazione socket (NET è il cliente, la macchina fotografica è il server).Image.FromStream() restituisce un'eccezione Argomento non valido
Il problema è che ottengo un'eccezione System.InvalidArgument in fase di esecuzione.
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;
}
Ho cercato questo problema in molti forum e ho provato i suggerimenti dati da molti esperti ma nulla ha aiutato.
Non penso ci sia alcun problema con l'array di byte in quanto tale perché quando alimento lo stesso array di byte nella mia applicazione client MFC VC++, ottengo l'immagine. Ma questo non funziona in qualche modo in C# .NET.
Qualcuno può aiutarmi?
PS:
Altri metodi ho provato ad eseguire la stessa operazione sono:
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;
}
Nessuno dei metodi di cui sopra lavorato. Gentilmente aiuto.
Che cosa succede se è sufficiente scrivere il ByteArray in un file su disco? Il file è in grado di aprirsi con qualcosa come Photoshop? – Chris
hai risolto? Ho lo stesso problema – robob