2016-05-03 16 views
1

Ich mache eine Bilder-Browser-Anwendung für Windows 10 UWP. Und ich versuche jede dieser beiden Ansätze zu verwenden:UWP - Laden von Bildern in einen Ordner

  1. Wählen Sie einzelnes Bild, dann laden und anzeigen, sondern auch zeigen, alle Bilder in diesem Ordner Benutzer zu ermöglichen, alle Bilder in diese Ordner zu durchsuchen .
  2. Wählen Sie den Ordner aus und zeigen Sie dann alle Bilder in diesem Ordner an, damit der Benutzer alle Bilder in diesem Ordner durchsuchen kann.

So ist die Grundidee nicht jedes Bild einzeln mit Filepicker zu laden, aber erlaubt dem Anwender, alle Bilder in einem ausgewählten Ordner zu durchsuchen, wie es in einem Standard-Fotos App in Windows 10. Aber ich derzeit getan wird kann keinen dieser beiden Ansätze funktionieren lassen. Zum Beispiel in diesem Code:

var folderPicker = new Windows.Storage.Pickers.FolderPicker(); 
folderPicker.FileTypeFilter.Add(".jpg"); 
var folder = await folderPicker.PickSingleFolderAsync(); 
var filesList = await folder.GetFilesAsync(); 
for (int i = 0; i < filesList.Count; i ++) 
{ 
    string filePath = filesList[i].Path; 
    BitmapImage bitmap = new BitmapImage(new Uri(filePath)); 
} 

mein Bitmap Objekt wird nie initialisiert. Ich nehme an, es hängt von einigen Sandbox-Beschränkungen ab, aber ich kann nicht verstehen, was getan werden sollte, um auf alle Bilder in einem ausgewählten Ordner zugreifen zu können.

+0

mehrere mögliche Gründe für das Problem gibt es. Zum einen wird die Eigenschaft 'Path' nur gesetzt, wenn die Datei einen Pfad im Dateisystem des Benutzers hat. Nur weil Sie es über den Picker finden, bedeutet das nicht, dass es einen Systempfad hat. Ich denke jedoch, dass Ihr 'Uri'-Konstruktor eine Ausnahme auslöst, wenn er einen leeren Pfad erhält. Wie auch immer, woher weißt du, dass die 'Bitmap'-Variable niemals initialisiert wird? Hast du Fehler gemacht? Wenn ja, an welchem ​​Punkt weißt du, dass es nicht initialisiert ist? Fügen Sie nach "BitmapImage bitmap = ..." ein 'int j = 0 'in die Zeile ein und setzen Sie dort Ihren Haltepunkt. –

Antwort

2

Try Einstellung Quelle mit Strom statt Pfad

for (int i = 0; i < filesList.Count; i++) 
      { 
       using (var stream = await filesList[i].OpenAsync(Windows.Storage.FileAccessMode.Read)) 
       { 
        var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage(); 
        await bitmapImage.SetSourceAsync(stream); 
       } 

      } 
Verwandte Themen