Windows phone 8 将图像另存为存储文件

Windows phone 8 将图像另存为存储文件,windows-phone-8,storagefile,Windows Phone 8,Storagefile,我正在尝试保存使用FileOpenPicker选择的图像。选择图像后,我将在此活动中使用午餐 async void photoChooserTask_Completed(object sender, PhotoResult e) { // get the file stream and file name Stream photoStream = e.ChosenPhoto; stri

我正在尝试保存使用FileOpenPicker选择的图像。选择图像后,我将在此活动中使用午餐

 async void  photoChooserTask_Completed(object sender, PhotoResult e)
{       
// get the file stream and file name           
                Stream photoStream = e.ChosenPhoto;    
                string fileName = Path.GetFileName(e.OriginalFileName);

  // persist data into isolated storage      
    StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);    
    using (Stream current = await file.OpenStreamForWriteAsync())    
    {     
        await photoStream.CopyToAsync(current);         
    }      
}         
但这段代码将为我提供保存文件的长度,并返回0

var properties = await file.GetBasicPropertiesAsync();
                i = properties.Size;

保存图像时我是否做错了什么?

您可能需要刷新流

如果不起作用,请添加一个断点,并在复制后检查两个流的长度。他们平等吗?应该是。那两个物体上有可疑的东西吗

编辑

在您发布的图像上,我可以看到您使用BitmapImage的SetSource方法复制了相同的流。一旦您这样做,流的位置将在末尾,因为它刚刚被该调用读取

CopyToAsync在调用流的当前位置后复制所有内容。因为位置在末尾,因为它刚刚被读取,所以CopyToAsync不会复制任何内容


要解决问题,您需要做的就是将流的位置设置为0。

检查这基本相同。看到了,但没有解决我的问题。您好,您没有做错任何事情。一切正常。我已经测试过了。可能是问题不同,或者您在检查时出错。请交叉检查它。在“i=properties.size”的下一行放一个断点。更新您的问题并添加设置图像。源代码使其成为初始值。然后它将帮助其他人。我解决了它。我删除了在页面上显示照片的代码,它可以正常工作。谢谢你的帮助哦,我想我知道问题出在哪里了。我更新了我的答案,看看。我想我的评论帮助你明白了这是真的。对不起,我没提,那不是故意的。:)