我真的没有得到它,这让我疯了。 我有这四行:
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之后。我检查contentBuffer的内容,我只看到255个值。 我不明白为什么会这样?在这几行中没有什么可错的! 如果有人能帮助我,我将不胜感激! 谢谢, agnieszka
答案 0 :(得分:39)
尝试将imageStream.Position设置为0.当您写入MemoryStream时,它会在您刚写入的字节后移动位置,所以如果您尝试读取那里没有任何内容。
答案 1 :(得分:25)
您需要重置文件指针。
imageStream.Seek( 0, SeekOrigin.Begin );
否则你正在阅读流的末尾。
答案 2 :(得分:12)
添加:
imageStream.Position = 0;
之前:
imageStream.Read(contentBuffer, 0, contentBuffer.Length);
读取指令中的0表示与存储器流中当前位置的偏移,而不是流的开始。加载流后,位置结束。您需要将其重置为开头。
答案 3 :(得分:8)
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);
答案 4 :(得分:5)
只需使用
imageStream.ToArray()
它有效且更容易。