Привет,
В настоящее время я пытаюсь разработать приложение, которое использует массив байтов, который передается нам из программы на языке Linux C через TCPClient (поток), и собирает его обратно в изображение / jpg. «Отправляющее» приложение было разработано сторонним разработчиком, который утверждает, что изображение снова собирается в изображение без каких-либо проблем или ошибок в его тестовой среде (все Linux) ...
Однако нам не так повезло. Я (полагаю) мы успешно получаем все отправленные данные, сохраняя их в виде строки (позволяет добавлять поток до его завершения), а затем преобразуем его обратно в байт []. Это, кажется, работает нормально ...
Но когда мы берем байт [], который мы получаем из потоковой передачи (и нашей сборки строк), и пытаемся преобразовать его в изображение с помощью System.Drawing.Image.FromStream (), мы получаем ошибки .... Любой есть идеи, что мы делаем не так? Или кто-нибудь знает, если это кроссплатформенный вопрос? Мы разрабатываем наше приложение для Windows XP и C # .net, но сторонний разработчик выполнил свою работу в c и Linux ... возможно, есть некоторая разница в том, как каждая операционная система объединяет изображения в байтовые массивы?
В любом случае, вот код для преобразования нашего полученного ByteArray (из потока TCPClient) в изображение. Этот код работает, когда мы отправляем образ с тестовой машины, которую мы создали для RUNS на XP, но не из коробки Linux ...
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] imageBytes = encoding.GetBytes(data);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
System.Drawing.Image image = System.Drawing.Image.FromStream(ms, false);
<-- DIES here, throws a {System.ArgumentException: Parameter is not valid.} error
Буду признателен за любые советы, предложения, теории или ПОМОЩЬ! Пожалуйста, дайте мне знать ???
Наилучшие пожелания всем! Заранее спасибо!
Грег