Потоке MemoryStream.Чтение не копирует байты в буфер-c#
Я не поняла и это сводит меня с ума. у меня есть эти 4 строки:
Image img = Image.FromFile("F:Pulpitsoa.bmp");
MemoryStream imageStream = new MemoryStream();
img.Save(imageStream, ImageFormat.Bmp);
byte[] contentBuffer = new byte[imageStream.Length];
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
при отладке я вижу значения байтов в imageStream. после imageStream.Прочитал я проверяю содержимое contentBuffer и вижу только 255 значений. я не могу понять, почему это происходит? в этих строчках нет ничего плохого! если бы кто-нибудь мог мне помочь, я был бы очень признателен! спасибо, Агнешка!--2-->
5 ответов
попробуйте установить imageStream.Положение 0. Когда вы пишете в MemoryStream, он перемещает позицию после байтов, которые вы только что написали, поэтому, если вы попытаетесь прочитать, там ничего нет.
вам нужно сбросить указатель на файл.
imageStream.Seek( 0, SeekOrigin.Begin );
в противном случае Вы читаете с конца потока.
добавить:
imageStream.Position = 0;
перед:
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
0 в инструкции read означает смещение от текущей позиции в потоке памяти, а не начало потока. После того, как поток был загружен, позиция в конце. Вам нужно сбросить его до начала.
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);