0

MediaLibaryに保存されている画像がいくつかあります。こちらをご覧ください。次に、フォトチューザータスクを使用して画像を選択した後、画像の名前を取得する必要があります。写真選択タスクを使用して画像を選択し、画像のパスを取得しました。私の目的は、パスから名前を取得することです。

private void button1_Click(object sender, RoutedEventArgs e)
{            
     PhotoChooserTask objPhotoChooser = new PhotoChooserTask();
     objPhotoChooser.Completed += new EventHandler<PhotoResult>(PhotoChooseCall);
      objPhotoChooser.Show();            
}

void PhotoChooseCall(object sender, PhotoResult e)
        {
            switch (e.TaskResult)
            {
                case TaskResult.OK:
                    BinaryReader objReader = new BinaryReader(e.ChosenPhoto);
                    image1.Source = new BitmapImage(new Uri(e.OriginalFileName));
                    MessageBox.Show("Photo's name: " + e.OriginalFileName.ToString());                    
                    break;
                case TaskResult.Cancel:
                    MessageBox.Show("Cancelled");
                    break;
                case TaskResult.None:
                    MessageBox.Show("Nothing Entered");
                    break;
            }
        }

出力:

写真の名前:\ Applications \ Data \ C80566AB-E17E-495C-81A1-3FCAE34D3DEDE \ Data \ PlatformData \ PhotoChooser-a8208960-3597-40fc-9b4f-869afcf822b6.jpg

同じ画像を選んだら。名前が変わります(PhotoChooser-a8208960-3597-40fc-9b4f-869afcf822b6.jpgが変わります)。写真の名前ではないと思います。

それで:

  1. 画像の名前を教えてもらえますか?

  2. そして、私たちはどのように行うのですか?

4

2 に答える 2

1

実際のファイル名を取得できます。そのためにMediaLibraryを使用します。

MediaLibrary lib = new MediaLibrary();
var collection = lib.RootPictureAlbum;

foreach (var p in collection.Albums[0].Pictures)
    Debug.WriteLine(p.Name);

ルート ピクチャ アルバム内のアルバム インデックスを指定していることに注意してください。0 はサンプル画像などになります。画像の内容を取得する必要がある場合は、 を使用p.GetImage();して読み取り可能なストリームを取得してください。

于 2013-03-18T17:52:52.100 に答える
0

いいえ。写真ハブにあるファイルの名前を取得することはできません。ストリームのコピーが与えられ、別の一時的な名前が付けられます。

于 2013-03-18T17:30:45.987 に答える