2

如何从应用程序实例之间的媒体库中检索同一张照片?我启动照片库供用户通过以下方式选择照片:

                        PhotoChooserTask myPhotoChooser = new PhotoChooserTask();
                        myPhotoChooser.ShowCamera = true;
                        myPhotoChooser.Show();
                        myPhotoChooser.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);

然后在事件处理程序中,我检索所选文件的文件名,如下所示:

    private void cameraCaptureTask_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult == TaskResult.OK)
        {
                         string imagePath = e.OriginalFileName.ToString();
         }
    }

我将这些信息保存在隔离存储中,这样当用户再次启动应用程序时,我可以检索路径并显示如下图像:

 private  BitmapImage ConvertUriToBitmap(string pathToImage)
    {
        StreamResourceInfo streamResInfo = null;
        Uri uri = new Uri(pathToImage, UriKind.Relative);

        streamResInfo = Application.GetResourceStream(uri); //This fails! StreamResInfo is null
        BitmapImage convertedBitmap = new BitmapImage();
        convertedBitmap.SetSource(streamResInfo.Stream);
        return convertedBitmap;
    } 

但是,这似乎不起作用,因为来自照片选择器的照片路径是某种形式的 guid:“\Applications\Data\02E58193-119F-42E2-AD85-C24247BE2AB0\Data\PlatformData\PhotoChooser-4edd185d- d934-4dac-8a34-758cac09d338.jpg"

每当我切换出应用程序或在页面之间移动时,Application.GetResourceStream(uri) 为空。有一个更好的方法吗?

如何每次都检索相同的路径,以便在我删除或终止应用程序时,我可以检索文件并显示它?或者是否有不同的/更有效的方式来做到这一点。

4

2 回答 2

2

我在文档中找到了答案:http: //msdn.microsoft.com/en-us/library/gg680264%28v=pandp.11%29.aspx 基本上,照片选择器中有一个错误,它返回一个临时路径. 如果你想在应用实例之间使用图片,微软的建议是把图片复制到隔离存储中。

于 2011-05-17T15:10:16.663 回答
0

Application.GetResourceStream 将为该路径返回 null,因为 GetResourceStream 方法正在应用程序本身中查找资源,而不是从设备中查找。

要从墓碑恢复中重新加载相同的图像,只需保留OriginalFileName属性,然后使用它来创建BitmapImage如下:

string path = /* Load the saved OriginalFileName */;
var bitmap = new BitmapImage(new Uri(path, UriKind.Absolute));
myImageControl.Source = bitmap;

注意: OriginalFileName属性已经是一个字符串,因此您不需要在其上调用.ToString()

于 2011-04-21T07:31:47.830 回答