栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

c# 获取照片的经纬度和时间的示例代码

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c# 获取照片的经纬度和时间的示例代码

public List GetXYFromPic(String jpgPath)
    {
      List sXY = new List();
      try
      {
 //载入图片  
 Image objImage = Image.FromFile(jpgPath);
 //取得所有的属性(以PropertyId做排序)  
 var propertyItems = objImage.PropertyItems.OrderBy(x => x.Id);
 foreach (PropertyItem objItem in propertyItems)
 {
   //只取Id范围为0x0000到0x001e
   if (objItem.Id >= 0x0000 && objItem.Id <= 0x001e)
   {
     switch (objItem.Id)
     {
case 0x0002://设置纬度
  if (objItem.Value.Length == 24)
  {
    //degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)  
    double d = BitConverter.ToUInt32(objItem.Value, 0) * 1.0d / BitConverter.ToUInt32(objItem.Value, 4);
    //minutes(將byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)  
    double m = BitConverter.ToUInt32(objItem.Value, 8) * 1.0d / BitConverter.ToUInt32(objItem.Value, 12);
    //seconds(將byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)  
    double s = BitConverter.ToUInt32(objItem.Value, 16) * 1.0d / BitConverter.ToUInt32(objItem.Value, 20);
    double dblGPSLatitude = (((s / 60 + m) / 60) + d);
 
    sXY.Add(dblGPSLatitude.ToString("0.00000000"));
  }
  break;
case 0x0004: //设置经度
  if (objItem.Value.Length == 24)
  {
    //degrees(将byte[0]~byte[3]转成uint, 除以byte[4]~byte[7]转成的uint)  
    double d = BitConverter.ToUInt32(objItem.Value, 0) * 1.0d / BitConverter.ToUInt32(objItem.Value, 4);
    //minutes(将byte[8]~byte[11]转成uint, 除以byte[12]~byte[15]转成的uint)  
    double m = BitConverter.ToUInt32(objItem.Value, 8) * 1.0d / BitConverter.ToUInt32(objItem.Value, 12);
    //seconds(将byte[16]~byte[19]转成uint, 除以byte[20]~byte[23]转成的uint)  
    double s = BitConverter.ToUInt32(objItem.Value, 16) * 1.0d / BitConverter.ToUInt32(objItem.Value, 20);
    double dblGPSLongitude = (((s / 60 + m) / 60) + d);
    sXY.Add(dblGPSLongitude.ToString("0.00000000"));
  }
  break;
     }
   }
   if (objItem.Id == 0x9003 || objItem.Id == 0x0132)//Id为0x9003表示拍照的时间,0x0132 最后更新时间
   {
     var propItemValue = objItem.Value;
     var dateTimeStr = System.Text.Encoding.ASCII.GetString(propItemValue).Trim('');
     var dt = DateTime.ParseExact(dateTimeStr, "yyyy:MM:dd HH:mm:ss", CultureInfo.InvariantCulture);
     sXY.Add(dt.ToString());//.ToShortDateString()
   }
 }
 
 objImage.Dispose();
 return sXY;
 
      }
      catch (Exception ex)
      {
 //MessageManager.Show(jpgPath + "该图片文件损坏");
 //listErrorMessage.Add(jpgPath + "该照片由于照片损坏,因此无法进行导入。");
 return sXY;
      }
 
    }

以上就是c# 获取照片的经纬度和时间的示例代码的详细内容,更多关于c# 获取照片的经纬度和时间的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/121656.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号