2011-04-21 45 views
2

如何從應用程序實例之間的媒體庫中檢索相同的照片?我啓動照片庫供用戶選擇通過照片:Windows Phone:如何在應用程序實例之間從媒體庫中檢索相同的照片

     PhotoChooserTask myPhotoChooser = new PhotoChooserTask(); 
         myPhotoChooser.ShowCamera = true; 
         myPhotoChooser.Show(); 
         myPhotoChooser.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed); 

,然後在事件處理程序中,我找回這樣選擇的文件的文件名:

private void cameraCaptureTask_Completed(object sender, PhotoResult e) 
    { 
     if (e.TaskResult == TaskResult.OK) 
     { 
         string imagePath = e.OriginalFileName.ToString(); 
     } 
    } 

我堅持這個在獨立存儲信息,這樣當用戶再次啓動應用程序,我可以檢索路徑,並顯示這樣的形象:

private BitmapImage ConvertUriToBitmap(string pathToImage) 
    { 
     StreamResourceInfo streamResInfo = null; 
     Uri uri = new Uri(pathToImage, UriKind.Relative); 

     streamResInfo = Application.GetResourceStream(uri); //This fails! StreamResInfo is null 
     BitmapImage convertedBitmap = new BitmapImage(); 
     convertedBitmap.SetSource(streamResInfo.Stream); 
     return convertedBitmap; 
    } 

然而,這似乎並沒有作爲光路F工作rom照片選擇器是某種形式的guid:「\ Applications \ Data \ 02E58193-119F-42E2-AD85-C24247BE2AB0 \ Data \ PlatformData \ PhotoChooser-4edd185d-d934-4dac-8a34-758cac09d338.jpg」

當我切換出應用程序或在頁面之間移動時,Application.GetResourceStream(uri)爲空。有一個更好的方法嗎?

如何每次檢索相同的路徑,以便當我墓碑或殺死應用程序時,我可以退出該文件並顯示它?或者是有不同的/更有效的方式來做到這一點。

回答

0

Application.GetResourceStream將爲該路徑返回null,因爲GetResourceStream方法在應用程序本身而不是設備中尋找資源。

要在簡歷從簡單的墓碑重新加載相同的圖像持續的OriginalFileName屬性,然後用它來創建一個BitmapImage如下:

string path = /* Load the saved OriginalFileName */; 
var bitmap = new BitmapImage(new Uri(path, UriKind.Absolute)); 
myImageControl.Source = bitmap;

注:OriginalFileName財產已經是一個字符串了,所以你不需要調用.ToString()就可以了。

+0

這很好用,謝謝! – KwackMaster 2011-04-23 01:33:15

+0

其實我發現這並不能完全解決問題。問題是從photochooser返回的originalFileName有一個只對當前應用程序實例有效的guid。如果我關閉並重新啓動應用程序,該路徑將不再工作(如果我再次選擇相同的照片,我會得到不同的路徑)。我需要的是我可以在應用程序實例之間使用的照片的絕對路徑。例如\ PhotoChooser \ Photo569_05_11_11.jpg。我不知道是否有辦法做到這一點,而不寫我自己的照片選擇器。 – KwackMaster 2011-05-16 21:45:49

相關問題