2011-06-22 8 views
2

Je sauvegarde l'image dans un stockage isolé Chaque image possède un nomFichierImage différent. Mais j'ai un problème pour récupérer toute l'image enregistrée dans une liste. Seulement réussi à récupérer la dernière image enregistrée. Quand je code dur le chemin de fichier puis peut le récupérer. J'espère que anyoen peut m'aider avec le code .. J'espère que tout le monde peut essayer d'éditer mon code. Merci.Récupération de plusieurs images à partir d'un stockage isolé

Code Economie:

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   } 

Code Récupérer:

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); 
      } 
} 

Répondre

4

Essayez quelque chose comme:

 
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

salut .. est-il possible de récupérer préciser l'image? comme récupérer seulement le second ou le troisième du stockage isolé –

+0

@ben tan: Bien sûr, il suffit d'ajouter une condition 'if()' à l'intérieur de 'foreach()' que 'continue; 'si l'image doit être ignorée ... – CodeZombie

+0

merci beaucoup pour ce code incroyable .. –

0

Difficile à dire sans voir plus de votre code, mais il semble que vous ne récupérer un seul fichier. Ailleurs dans votre code, vous obtenez une liste de tous les fichiers qui doivent se trouver dans le répertoire IsolateStorage et qui les parcourent en boucle? Est-ce que vous voyez des messages d'erreur, ou est-ce que cela échoue simplement en silence?

+0

Voici le code pour mon bouton d'économie .. SaveToLocalStorage ("imagefolder", App.imagePath); Et c'est le code pour mon bouton de récupération .. LoadFromLocalStorage ("imageFolder", imageFileName); Il n'y a pas d'autre code .. Comment devrais-je faire la boucle et obtenir la liste de tous les fichiers dans le répertoire ?? Il n'y a pas d'erreur. Pouvez-vous me donner un exemple? Ou peut simplement modifier sur le code .. Merci .. J'apprécierai .. –

+0

@Evon Chong: 'App.imagePath' ressemble à une chaîne statique ou une variable URI de sorte qu'il ne contient qu'un seul chemin d'image. Pas étonnant que vous n'obteniez qu'une seule image. Vous avez besoin d'une collection de chaînes ou d'URI pour parcourir et récupérer chaque image. – CodeZombie

+0

mon App.imagePath est App.imagePath = String.Format ("PhotoNote_ {0: aaaa-MM-jj-mm-ss-tt} .jpg", DateTime.Now); –

Questions connexes