C# Xamarin.forms ImageSource.FromFile不';行不通

C# Xamarin.forms ImageSource.FromFile不';行不通,c#,.net,xamarin,xamarin.forms,C#,.net,Xamarin,Xamarin.forms,我正在使用Xam.Plugin.Media拍照 var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions() { Directory = "attachments", Name = fileName, CompressionQuality = 35

我正在使用Xam.Plugin.Media拍照

 var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions()
        {
            Directory = "attachments",
            Name = fileName,
            CompressionQuality = 35
        });
        cam.Source = ImageSource.FromFile(file.Path);
以上代码确实有效

文件路径为(file.path):

但此代码不在图像控件中显示图片

var q = "/var/mobile/Containers/Data/Application/F3997E36-78EB-41AF-A37F-FC794BAF30EC/Documents/attachments/13c8ac4e57734a36bded2c2694e27495.jpg"  


 cam.Source = ImageSource.FromFile(q);

您需要将照片保存在库中。当您的用户拍摄照片时,它仍将存储临时数据,但如果需要,还将复制到公共画廊

var file = await CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
    SaveToAlbum = true
});
获取公共相册路径

var aPpath = file.AlbumPath; 
var path = file.Path;
获取私有路径

var aPpath = file.AlbumPath; 
var path = file.Path;

在iOS上,这是加载以前保存的文件的方法。这是因为每次重新启动应用程序时,系统都会重新生成UDID

public Stream LoadSampleStream(string filename) {
    try
    {
        var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        var filePath = Path.Combine(documentsPath, "Sample", filename);
        return new FileStream(filePath, FileMode.Open);
    }
    catch(Exception ex) {
        return null;
    }
}

我想我可以保存在app document文件夹中,而不需要将其放在Gallery中。我在使用Xamarin forms Media Plugin
CrossMedia
时遇到了这个问题,该插件只返回图像的完整路径,如上所述,在启动时会发生更改,为了克服这个问题,我必须拆分返回的路径字符串并从中获取文件名,然后使用上述方法获取文件流。