我从PhotoResult
photoChooserTask_Completed(object sender, PhotoResult e)
事件处理程序收到了一个Stream。
e.ChosenPhoto
本身就是一个Stream,所以我将其分配给Stream stream
。然后我使用下面的方法将它转换为byte []数组:
public static byte[] ReadImageFile2(Stream mystream)
{
// The mystream.length is still full here.
byte[] imageData = null;
using (BinaryReader br = new BinaryReader(mystream))
{
imageData = br.ReadBytes(Convert.ToInt32(mystream.Length));
}
// But imageData.length is 0
return imageData;
}
我不知道BinaryReader有什么问题,只返回长度为0的imageData
。试图将类型转换为br.ReadBytes((int)mystream.Length)
,但仍无效。
还尝试了Creating a byte array from a stream中的所有答案,但仍无效。也许我的e.ChosenPhoto
不能用作普通的流。
谢谢。
答案 0 :(得分:9)
根据docs,您可能必须在阅读之前将流的位置设置为0:
using (BinaryReader br = new BinaryReader(mystream))
{
mystream.Position = 0;
imageData = br.ReadBytes(Convert.ToInt32(mystream.Length));
}