c# 获取照片的经纬度和时间
public List<string> GetXYFromPic(String jpgPath) { List<string> sXY = new List<string>(); 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('\0'); 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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2018-09-28 2.3.4 工具运行和错误解决方法
2016-09-28 ArcGIS知乎上有哪些干货可以推荐?
2016-09-28 ArcGIS补丁包下载
2009-09-28 一次导出Word中的所有图形,可以是JPG,BMP,PNG,GIF,EMF,TIF格式