2016-05-03 39 views
1

私はWindows 10 UWP用の画像ブラウザアプリケーションを作成しています。 そして私は、これら2つのアプローチのいずれかを使用しようとしています:UWP - フォルダに画像を読み込む

  1. は、それをロードして表示し、その後、単一の画像を選択するだけでなく、 でこのフォルダをすべての画像を閲覧するユーザが可能にするために、このフォルダ内のすべての の画像を表示。
  2. このフォルダ内のすべての画像を表示して の画像を表示すると、このフォルダ内のすべての画像を参照できるようになります。だから、

、主なアイデアは、FilePickerとは別に、各画像を読み込み、それがWindows 10 における標準の写真アプリで行われているように、ユーザは、選択したフォルダ内のすべての画像を閲覧できるようにすることはありませんが、現在、Iこれら2つのアプローチのいずれかを動作させることはできません。たとえば、このコードで:

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

ビットマップオブジェクトが初期化されることはありません。私はそれが何らかのサンドボックスの制限に依存していると考えていますが、選択したフォルダ内のすべての画像にアクセスできるようにするために何をすべきか理解できません。

+0

を使用してソースを設定してみてください。 1つは、ファイルのパスがユーザのファイルシステムにある場合にのみ 'Path'プロパティが設定されるということです。あなたがピッカーを介してそれを見つけたとしても、システムパスがあるわけではありません。あなたの 'Uri'コンストラクタは、空のパスを取得したときに例外をスローしますが、私は思っています。とにかく、 'bitmap'変数が決して初期化されないことをどうお知りになりますか?あなたはデバッグしましたか?もしそうなら、どの時点でそれが初期化されていないことを知っていますか? 'BitmapImage bitmap = ...'の後の行に 'int j = 0'を追加してブレークポイントをそこに置きます。 –

答えて

2

は問題にはいくつかの理由がありますが、ストリームの代わりにパス

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

      } 
関連する問題