0

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

我在保存图像时做错了什么吗?

4

1 回答 1

2

您可能需要刷新流。

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

编辑

在您发布的图像上,我可以看到您将 Bi​​tmapImage 的 SetSource 方法与您复制的相同 Stream 一起使用。一旦你这样做了,流的位置将在最后,因为它刚刚被那个调用读取。

CopyToAsync 在您调用它的 Stream 的当前位置之后复制所有内容。由于位置在末尾,因为它只是被读取,所以 CopyToAsync 不会复制任何东西。

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

于 2014-05-20T11:46:56.650 回答