agn*_*zka 18 c# buffer memorystream image
我真的没有得到它,这让我疯狂.我有这四行:
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);
Run Code Online (Sandbox Code Playgroud)
调试时我可以看到imageStream中的字节值.在imageStream之后.我检查contentBuffer的内容,我只看到255个值.我不明白为什么会这样?在这几行中没有什么可错的!如果有人能帮助我,我将不胜感激!谢谢,agnieszka
Joe*_*csy 25
您需要重置文件指针.
imageStream.Seek( 0, SeekOrigin.Begin );
Run Code Online (Sandbox Code Playgroud)
否则你正在从流的末尾读取.
Ben*_*ter 13
加:
imageStream.Position = 0;
Run Code Online (Sandbox Code Playgroud)
就在之前:
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
Run Code Online (Sandbox Code Playgroud)
读取指令中的0表示与存储器流中当前位置的偏移,而不是流的开始.加载流后,位置结束.您需要将其重置为开头.
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);
Run Code Online (Sandbox Code Playgroud)