Ответ 1
Попробуйте установить imageStream.Position на 0. Когда вы пишете в MemoryStream, он перемещает позицию после байтов, которые вы только что написали, поэтому, если вы пытаетесь там ничего не читать.
Я действительно не понимаю, и это сводит меня с ума. У меня эти 4 строки:
Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
при отладке я могу видеть значения байтов в imageStream. после imageStream.Read я проверить содержимое contentBuffer, и я вижу только 255 значений. Я не могу понять, почему это происходит? в этих нескольких строках нечего делать неправильно! если бы кто-нибудь мог мне помочь, мы будем очень благодарны! благодаря, Агнешка
Попробуйте установить imageStream.Position на 0. Когда вы пишете в MemoryStream, он перемещает позицию после байтов, которые вы только что написали, поэтому, если вы пытаетесь там ничего не читать.
Вам нужно reset указатель файла.
imageStream.Seek( 0, SeekOrigin.Begin );
В противном случае вы читаете с конца потока.
Добавить
imageStream.Position = 0;
прямо перед:
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
0 в вашей команде чтения означает смещение от текущей позиции в потоке памяти, а не в начале потока. После того, как поток загружен, позиция находится в конце. Вам нужно reset до начала.
Image img = Image.FromFile("F:\\Pulpit\\soa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Position = 0;//Reset the position at the start
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
Просто используйте
imageStream.ToArray()
Это работает, и это проще.