刚刚发现一个比较奇怪的现象,从Stream复制数据到byte[]数组后,发现byte[]的数据都还是默认值,见代码:
/// <summary>
/// 从相册中完成获取图像
/// </summary>
private void OnPhotoChooserTaskComplete(object sender, PhotoResult e)
{
Stream ms = new MemoryStream();
e.ChosenPhoto.CopyTo(ms);
byte[] byteArray = new byte[ms.Length];
// 将ms的字节流复制到byteArray后,竟发现byteArray的数据都为0
ms.Read(byteArray, 0, byteArray.Length);
}
后来才醒悟,原来ms拿完数据后,还要从里面读数据就得设置ms.Position = 0;
即是在
e.ChosenPhoto.CopyTo(ms);
之后将ms的索引位置置为最开始值:ms.Position = 0;