C# Xamarin.forms ImageSource.FromFile不';行不通
我正在使用Xam.Plugin.Media拍照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
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
时遇到了这个问题,该插件只返回图像的完整路径,如上所述,在启动时会发生更改,为了克服这个问题,我必须拆分返回的路径字符串并从中获取文件名,然后使用上述方法获取文件流。