2014-05-20 287 views
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; 

難道我做錯了保存圖像的lenght?

+0

檢查http://stackoverflow.com/questions/19886950/save-the-image-in-storage-file-in -windows-phone-8這個基本上是一樣的。 – loop

+0

看到它,但沒有解決我的問題 – AnotherGeek

+0

嗨,你沒有做任何錯誤的一切工作正常我測試了它。可能是問題不同,或者您在檢查時出錯。 plz交叉檢查它。在「i = properties.size」的下一行輸入一個斷點。 – loop

回答

2

您可能需要刷新流。

如果這不起作用,請添加一個斷點並檢查複製後的兩個流的長度。他們是平等的嗎?他們應該是。對這兩個流對象有任何疑問?

編輯

在您發佈的圖像,我可以看到你使用的BitmapImage的方法的SetSource與您複製相同的流。一旦你這樣做了,Stream的位置將會在最後,因爲它剛剛被這個電話讀取。

CopyToAsync複製當前您調用的流的位置之後的所有內容。由於位置在最後,因爲它剛剛被讀取,所以CopyToAsync不會複製同步。

所有你需要做的,以解決您的問題設置流的位置爲0

+1

我解決了它。我刪除了代碼以在頁面上顯示照片並且它可以正常工作。謝謝你的幫助 – AnotherGeek

+0

哦,我想我知道問題是什麼。我更新了我的答案,查看了一下。 – yasen

+0

我認爲我的評論幫助你弄清楚了 – AnotherGeek

0

這裏是我的截圖,似乎和你的一樣,但結果是不同的 enter image description here