Я снимаю изображения со смарт-камеры и получаю массив байтов с камеры через программирование сокетов (.NET-приложение - это клиент, камера - это сервер).
Проблема в том, что я получаю исключение System.InvalidArgument во время выполнения.
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;
}
Я искал эту проблему на многих форумах и пробовал предложения многих экспертов, но ничего не помогло.
Я не думаю, что есть какая-то проблема с байтовым массивом как таковым, потому что, когда я передаю тот же байтовый массив в мое клиентское приложение VFC ++ MFC, я получаю изображение. Но это как-то не работает в C # .NET.
Кто-нибудь может мне помочь?
P.S .:
Другие методы, которые я пытался выполнить для этой же задачи:
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;
}
Ни один из вышеперечисленных методов не работал. Пожалуйста, помогите.