我有一幅经度和纬度坐标的图像,有人可以告诉我如何获取吗?我尝试过
if (CrossMedia.Current.IsPickPhotoSupported)
{
MediaFile photoPicked = await CrossMedia.Current.PickPhotoAsync();
if (photoPicked != null)
{
//await DisplayAlert("Photo Location", photoPicked.Path, "OK");
//path = photoPicked.Path;
using (Stream streamPic = photoPicked.GetStream())
{
var picInfo = ExifReader.ReadJpeg(streamPic);
ExifOrientation orientation = picInfo.Orientation;
//MainImage123.Source = ImageSource.FromStream(() => photoPicked.GetStream());
latitude = picInfo.GpsLatitude;
longitude = picInfo.GpsLongitude;
var filepath = photoPicked.AlbumPath;
var filepath1 = photoPicked.Path;
}
}
}
当我选择照片并尝试获取其坐标时,它可以工作,但是我必须从图库中拍摄多张照片并找到其坐标。 有谁知道如何读取图像的地理坐标吗?请帮助我。
答案 0 :(得分:1)
您可以使用ExifLib.PCL Nuget包通过查看“代码示例”来读取图像元数据,我认为您正在使用Plugin.Media来从图库中获取图像/获取图像。从您的应用中拍摄照片时,请务必使用SaveMetaData = true
。
将 SaveMetaData 设置为 true 后,使用 ExifLib 获取元数据,如下所示:
MediaFile photo;
using (Stream streamPic = photo.GetStream())
{
var picInfo = ExifReader.ReadJpeg(streamPic);
double lat = picInfo.GpsLatitude;
double lon = picInfo.GpsLongitude;
}
此外,作为加,您还可以获取有关照片的更多信息(拍摄日期,作者,尺寸等)。
更新:
再次阅读后,看来问题是您无法从图库中选择多张图像,并且不无法从照片中获取经纬度。目前,Plugin.Media不支持多选。
答案 1 :(得分:0)
但是您的问题尚不清楚-我想您正在尝试使其与多个图像一起使用。您如何能够一起选择多张图像?
插件“ CrossMedia”不支持拾取多个图像。
您的解决方案需要完成大量工作才能一次拾取多张图像。因此,请在此处按照这个不错的分步教程进行操作:
https://xamgirl.com/select-multiple-images-from-gallery-in-xamarin-forms/
有了上面的内容,您将能够立即获得您需要的所有图像。 获得List后,您所需要做的就是遍历这些图像并调用您现有的代码。