将图像另存为StorageFile

时间:2014-05-20 08:59:51

标签: windows-phone-8 storagefile

我正在尝试保存使用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;

我在保存图片时做错了吗?

2 个答案:

答案 0 :(得分:2)

您可能需要刷新流。

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

修改

在您发布的图像上,我可以看到您使用BitmapImage的SetSource方法和您复制的相同Stream。一旦你这样做,Stream的位置就会结束,因为它只是通过那个电话来阅读。

CopyToAsync会复制您调用它的当前位置后的所有内容。由于位置在最后,因为它刚刚被读取,因此CopyToAsync不会复制anthing。

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

答案 1 :(得分:0)

这是我的截图,它看起来和你的截图相同,但结果却不同 enter image description here