如何将照片位置保存为一个类的字符串变量?

问题描述:

在我的应用程序中,用户使用PhotoChooserTask从相机胶卷中选择一张照片。我想将照片的位置保存到LogEntry类的字符串变量中,以便我可以根据需要在稍后重新加载照片。如何将照片位置保存为一个类的字符串变量?

Log是LogEntry类项目的ObservableCollection。

public ObservableCollection<LogEntry> Log = new ObservableCollection<LogEntry>(); 

我该怎么办,没有将照片保存到LogEntry和不保存照片到IsolatedStorage字节数组?

+0

你只需要添加照片位置进入名单。为什么你需要将照片保存为字节和IsolatedStorage? – 2013-04-25 00:21:28

+0

问题在于,如何以Windows Phone期望的方式找到照片位置,并且会理解它。不,我不想保存为字节或IsolatedStorage。 – 2013-04-25 00:35:10

首先,我将所选图片的名称和相册的名称保存在每个LogEntry项目的属性中。

要从画册加载图片:

 public BitmapImage GetPicture(string FileName) 
     { 
     // Work around for known bug in the media framework. Hits the static constructors 
     // so the user does not need to go to the picture hub first. 
     MediaPlayer.Queue.ToString(); 

     MediaLibrary ml = null; 
     PictureAlbum cameraRoll = null; 
     PictureAlbum savedPictures = null; 
     PictureAlbum samplePictures = null; 
     PictureAlbum favoritePictures = null; 

     int index = FileName.IndexOf("\\"); 
     string albumName = FileName.Remove(index, FileName.Length - index); 
     string fileName = FileName.Remove(0, index + 1); 

     foreach (MediaSource source in MediaSource.GetAvailableMediaSources()) 
      { 
      if (source.MediaSourceType == MediaSourceType.LocalDevice) 
       { 
       ml = new MediaLibrary(source); 
       PictureAlbumCollection allAlbums = ml.RootPictureAlbum.Albums; 

       foreach (PictureAlbum album in allAlbums) 
        { 
        if (album.Name == "Camera Roll") 
         { 
         cameraRoll = album; 
         } 
        else if (album.Name == "Saved Pictures") 
         { 
         savedPictures = album; 
         } 
        else if (album.Name == "Sample Pictures") 
         { 
         samplePictures = album; 
         } 
        else if (album.Name == "Favorite Pictures") 
         { 
         favoritePictures = album; 
         } 
        } 
       } 
      } 

     PictureAlbum Album; 
     switch (albumName) 
      { 
      case "Camera Roll": 
       Album = cameraRoll; 
       break; 

      case "Saved Pictures": 
       Album = savedPictures; 
       break; 

      case "Sample Pictures": 
       Album = samplePictures; 
       break; 

      case "Favorite Pictures": 
       Album = favoritePictures; 
       break; 

      default: 
       Album = null; 
       break; 
      } 

     if (Album == null) 
      { 
      return new BitmapImage(); 
      } 

     BitmapImage b = new BitmapImage(); 
     foreach (Picture p in Album.Pictures.Take(Album.Pictures.Count)) 
      { 
      if (fileName == p.Name) 
       { 
       b.SetSource(p.GetThumbnail()); 
       break; 
       } 
      } 

     return b; 
     }