【问题标题】:How to read Geo Coordinates From Image Property using Xamarin Forms?如何使用 Xamarin 表单从图像属性中读取地理坐标?
【发布时间】:2021-07-20 02:43:32
【问题描述】:

我有一张带有经度和纬度坐标的图像,谁能告诉我如何得到它?我试过了

 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,你呢?有什么想法吗?谢谢!!

标签: xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

您可以使用ExifLib.PCL Nuget 包来读取图像元数据,通过查看您的“代码示例”,我认为您正在使用Plugin.Media 从图库中获取图像/获取图像,请务必使用@ 987654323@ 从您的应用中拍照时。 将 SaveMetaData 设置为 true 后,使用 ExifLib 获取 MetaData,如下所示:

        MediaFile photo;

        using (Stream streamPic = photo.GetStream())
        {
            var picInfo = ExifReader.ReadJpeg(streamPic);
            double lat = picInfo.GpsLatitude;
            double lon = picInfo.GpsLongitude;
        }

另外,作为一个加号,您可以获得有关照片的更多信息(拍摄日期、作者、尺寸等)。

更新:

再次阅读后,似乎问题在于您无法从图库中选择多个图像,并且无法能够从照片中获取纬度和经度。目前 Plugin.Media 不支持多选。

【讨论】:

  • 我认为他正在尝试使其与多个图像一起使用。他如何能够同时挑选多张图像并循环执行他所做的任何事情。
  • @NirmalSubedi 仔细阅读后,你是对的,我虽然他没有从拍照时获取元数据(因为他说在挑选图像时它正在工作),因为他没有设置SaveMetaData 为 true,因为 Plugin.Media 甚至不支持多选。我想我会编辑这个问题,这样会更清楚。
【解决方案2】:

但是,您的问题不清楚 - 我认为您正在尝试使其与多个图像一起使用。如何能够同时挑选多张图片?

插件“CrossMedia”不支持拾取多张图片。

您的解决方案需要完成大量工作才能一次提取多张图像。因此,请在此处按照这个不错的分步教程进行操作:

https://xamgirl.com/select-multiple-images-from-gallery-in-xamarin-forms/

通过以上内容,您将能够一次获得所需的所有图像。 获得 List 后,您所要做的就是遍历这些图像并调用您现有的代码。

【讨论】:

  • 感谢您的回复,实际上我的问题是从图库中获取任何图像并读取其地理坐标。 exiflib.pcl 插件毫无疑问地工作,我想做的是,在图库中的网格中显示所有图像,然后单击任何想要读取其属性的图像。并成功完成:) 抱歉,不清楚,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2013-08-26
  • 2023-03-20
  • 2012-04-30
相关资源
最近更新 更多