@Abel: Когда он фактически создает MemoryStream из байтового массива, он по умолчанию располагается в начале. Тем не менее, я полагаю, что код, размещенный в вопросе, не был точным представлением реального кода.
аюсь преобразоватьbyte[]
вBitmap
в с #. Ниже приведен код:
MemoryStream ms = new MemoryStream(b);
Bitmap bmp = new Bitmap(ms);
Показывает ошибкуParameter is not valid
при созданииBitmap
.
byte[] b
исходит из сетевого потока.
Но когда я записываю этот байт [] в файл и открываю этот файл в любой программе просмотра изображений, он просто отлично работает. Ниже приведен код для записи байта [] в файл:
var fs = new BinaryWriter(new FileStream("tmp.bmp", FileMode.Create, FileAccess.Write));
fs.Write(b);
fs.Close();
Что мне здесь не хватает?
РЕДАКТИРОВАТЬ
Вот мой полный код, который вызывал проблему
Socket s = listener.AcceptSocket();
byte[] b = new byte[imgLen];
s.Receive(b);
MemoryStream ms = new MemoryStream(b);
// now here I am using ms.Seek(0, SeekOrigin.Begin); that fixed my problem.
Bitmap bmp = new Bitmap(ms);
pictureBox1.Image = bmp;
s.Close();
Я использую этот код наForm_Load
событие и ничего лишнего. Я просто пытаюсь отобразить изображение, которое транслируется в сети. Сервер написан на Java, который передает это изображение.
Надеюсь, это проясняет сомнения.
Спасибо