Я собираю изображения с помощью интеллектуального устройства для камеры и получаю массив байтов из камеры через программирование сокетов (приложение .NET - это клиент, камера - сервер).Image.FromStream() метод возвращает ошибку Invalid Argument
Проблема в том, что я получаю исключение 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;
}
Я искал эту проблему на многих форумах и пробовал предложения многих экспертов, но ничего не помогло.
Я не думаю, что есть проблема с массивом байтов как таковая, потому что, когда я корм одного массива байтов в клиентское приложение VC++ MFC, я получаю изображение. Но это не работает в C# .NET.
Может ли кто-нибудь мне помочь?
PS:
Другие методы я пытался выполнить ту же задачу, являются: не
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;
}
Ни один из описанных выше способов работал. Незлая помощь.
Что произойдет, если вы просто написать ByteArray в файл на диске? Является ли файл открытым с чем-то вроде Photoshop? – Chris
вы решили? У меня та же проблема – robob