2011-06-22 58 views
2

我將圖像保存到獨立存儲中每個圖像都有不同的imageFileName。但我有問題檢索列表框中的所有保存的圖像。 只設法檢索保存的最新圖像。 當我硬編碼文件路徑,然後可以檢索它。 我希望anyoen可以幫助我的代碼..希望任何人都可以嘗試編輯我的代碼。謝謝。從獨立存儲檢索多個圖像

保存代碼:

private void SaveToLocalStorage(string imageFolder, string imageFileName) 
     { 
      imageFileName = App.imagePath; 

      var isf = IsolatedStorageFile.GetUserStoreForApplication(); 
      if (!isf.DirectoryExists(imageFolder)) 
      { 
       isf.CreateDirectory(imageFolder); 
      } 

      string filePath = Path.Combine(imageFolder, imageFileName); 
      using (var stream = isf.CreateFile(filePath)) 
      { 
       var bmp = new WriteableBitmap(inkCanvas, inkCanvas.RenderTransform); 
       bmp.SaveJpeg(stream, bmp.PixelWidth, bmp.PixelHeight, 0, 100); 
      } 
      MessageBox.Show(filePath   } 

檢索代碼:

private void LoadFromLocalStorage(string imageFolder, string imageFileName) 
     { 
      var isoFile = IsolatedStorageFile.GetUserStoreForApplication(); 
      if (!isoFile.DirectoryExists(imageFolder)) 
      { 
       isoFile.CreateDirectory(imageFolder); 
      } 

      string filePath = Path.Combine(imageFolder, imageFileName); 
      using (var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read)) 
      { 
       var imageSource = PictureDecoder.DecodeJpeg(imageStream); 

       BitmapImage bi = new BitmapImage(); 

       ListBoxItem item = new ListBoxItem(); 
       bi.SetSource(imageStream); 
       item.Content = new Image() { Source = bi, MaxHeight = 100, MaxWidth = 100 }; 
       listBox1.Items.Add(item); 
      } 
} 

回答

4

試着這麼做:

 
private void LoadFromLocalStorage(string imageFolder) 
{ 
    var isoFile = IsolatedStorageFile.GetUserStoreForApplication(); 

    // Check if directory exists 
    if(!isoFile.DirectoryExists(imageFolder)) 
    { 
     throw new Exception("Image directory not found"); 
    } 

    // Clear listbox 
    listBox1.Items.Clear(); 

    // Get files 
    foreach(string fileName in isoFile.GetFileNames()) 
    { 
     string filePath = Path.Combine(imageFolder, fileName); 
     using(var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read)) 
     { 
      var imageSource = PictureDecoder.DecodeJpeg(imageStream); 

      BitmapImage bi = new BitmapImage(); 

      ListBoxItem item = new ListBoxItem(); 
      bi.SetSource(imageStream); 
      item.Content = new Image() { Source = bi, MaxHeight = 100, MaxWidth = 100 }; 
      listBox1.Items.Add(item); 
     } 
    } 
} 
+0

嗨..是否有可能檢索指定的圖像?像只從第二個或第三個隔離存儲中檢索 –

+0

@ben tan:當然,只要在'foreach()'裏面添加'if()'條件繼續;如果圖像應該被忽略, – CodeZombie

+0

非常感謝你爲這個驚人的代碼.. –

0

硬,沒有看到更多的代碼的說,但它看起來像你只檢索一個文件。在你的代碼的其他地方,你會得到應該在IsolateStorage目錄中的所有文件的列表並循環它們?你是否看到任何錯誤消息,還是隻是在默默地失敗?

+0

這是我的救命按鈕.. SaveToLocalStorage( 「imageFolder」,App.imagePath)代碼; 這是我的檢索按鈕的代碼.. LoadFromLocalStorage(「imageFolder」,imageFileName); 沒有其他代碼.. 我應該如何去做循環和獲取目錄中的所有文件的列表? 沒有錯誤。 你能給我提供一個例子嗎?或者只能編輯代碼..謝謝..將不勝感激.. –

+0

@Evon Chong:'App.imagePath'聽起來像一個靜態字符串或URI變量,因此它只包含一個圖像路徑。難怪你只能得到一個圖像。你需要一個字符串或URI的集合來迭代和檢索每一個圖像。 – CodeZombie

+0

我的App.imagePath是App.imagePath = String.Format(「PhotoNote_ {0:yyyy-MM-dd_hh-mm-ss-tt} .jpg」,DateTime.Now); –