在Knownfolders.CamerRoll中找不到文件异常

时间:2013-09-09 14:38:32

标签: c# exception windows-phone-8 image-loading media-library

当我尝试使用File not found exception属性加载图像文件时,我收到KnownFolders.CameraRoll。该图像位于我的Windows Phone 8的CameraRoll中。我还在我的应用程序中启用了以下功能

  <Capability Name="ID_CAP_NETWORKING" />
   <Capability Name="ID_CAP_MEDIALIB_AUDIO" />
   <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" />
   <Capability Name="ID_CAP_SENSORS" />
   <Capability Name="ID_CAP_WEBBROWSERCOMPONENT" />
   <Capability Name="ID_CAP_MEDIALIB_PHOTO" />
  <Capability Name="ID_CAP_ISV_CAMERA" />

这是我获取图片的代码。

 private async void cameraRoll_btn_Click(object sender, RoutedEventArgs
 e) {
             try {
                 StorageFile file = await Windows.Storage.KnownFolders.CameraRoll.GetFileAsync("WP_20130607_003.jpg");
                 var mem = await file.OpenAsync(FileAccessMode.Read);
                 BitmapImage bitImage = new BitmapImage();
                 bitImage.SetSource(mem.AsStream());
                 ImageView.Source = bitImage;
             }
             catch (Exception ex) {
                 MessageBox.Show(ex.Message);
             }
         }

图像WP_20130607_003.jpg也出现在相机胶卷中,我正在将应用程序部署到设备上。它会在GetFileAsync行引发异常。任何预示都可以给我一些暗示,我在这里做错了吗?

由于

1 个答案:

答案 0 :(得分:0)

来自MSDN

  

Windows Phone 8:此API不能直接使用   你的代码。

您可以使用PhotoChooserTask让用户选择照片。或者,您可以使用MediaLibrary.Pictures以编程方式访问图片。例如

MediaLibrary ml = new MediaLibrary();
var picture = ml.Pictures.Where(x => x.Name.Equals("WP_20130607_003.jpg")).FirstOrDefault();
if(picture != null)  
{
   //get the image stream
   var picStream = picture.GetImage();

   //...
}