ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6665|回复: 7

[分享] 教你用代码从照片中提取GPS经度和纬度

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-13 08:39 | 显示全部楼层 |阅读模式
手机拍照时如果开启了位置信息:
000.jpg
那么你通过右键对照片查看属性时就可以看到经度和纬度。
002.jpg

那么问题来了,如何用代码将这两个值取出来呢?
今天分享给你们。
Imports System.Drawing
Imports System.Drawing.Imaging
Sub 从照片中提取经度和纬度()
        On Error Resume Next
        Dim theImage As Image = New Bitmap("c:\456.jpg")  '请根据自己的实际情况修改
        Dim propItems As PropertyItem() = theImage.PropertyItems
        Dim propItem As PropertyItem, WeiDu As Byte(), JingDu As Byte()
        Dim a, b, c As Double, aa, bb, cc As Double, 经 As String, 纬 As String
        For Each propItem In propItems
            If propItem.Id = 2 Then  
                WeiDu = propItem.Value  
                a = BitConverter.ToUInt32(WeiDu, 0) / BitConverter.ToUInt32(WeiDu, 4)    '读取度
                b = BitConverter.ToUInt32(WeiDu, 8) / BitConverter.ToUInt32(WeiDu, 12)   '读取分
                c = BitConverter.ToUInt32(WeiDu, 16) / BitConverter.ToUInt32(WeiDu, 20)  '读取秒
                纬 = a & "度" & b & "分" & c & "秒"
            ElseIf propItem.Id = 4 Then
                JingDu = propItem.Value  
                aa = BitConverter.ToUInt32(JingDu, 0) / BitConverter.ToUInt32(JingDu, 4)    '读取度
                bb = BitConverter.ToUInt32(JingDu, 8) / BitConverter.ToUInt32(JingDu, 12)   '读取分
                cc = BitConverter.ToUInt32(JingDu, 16) / BitConverter.ToUInt32(JingDu, 20)  '读取秒
                经 = aa & "度" & bb & "分" & cc & "秒"
            End If
        Next
        MsgBox("经:" & 经 & Chr(13) & "纬:" & 纬, vbOKOnly, "友情提示")
    End Sub

前两句是声明命名空间,后面的是代码。
这是VSTO代码,不是VBA代码,要注意。
执行代码以后会弹出对话框:

001.jpg
表示执行成功。
代码中的"c:\456.jpg"  请自行修改路径,每个人的图片位置不同。
如果你再加循环语句,那么就可以批量提取了。
如果您觉得本文分享请用,请转发。
更多VSTO知识,参见图书《Excel VBA与VSTO基础实战指南》
Excel VBA与VSTO基础实战指南.png

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-10-18 09:43 | 显示全部楼层
好东西就是要分享!

TA的精华主题

TA的得分主题

发表于 2018-10-18 11:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
用我的手机拍的照片试了下,没有经纬度信息,如何才能拍出经纬度?请指教。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-18 11:44 | 显示全部楼层
xd3210 发表于 2018-10-18 11:10
用我的手机拍的照片试了下,没有经纬度信息,如何才能拍出经纬度?请指教。

一楼讲了
要打开位置信息

TA的精华主题

TA的得分主题

发表于 2018-10-18 11:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
andysky 发表于 2018-10-18 11:44
一楼讲了
要打开位置信息

我按一楼的拍了一张,没有提取到经纬度
jwd.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-18 18:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-20 15:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA代码看着很神奇,但啥都不懂,能学会吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-20 18:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
393390696 发表于 2018-10-20 15:48
VBA代码看着很神奇,但啥都不懂,能学会吗?

会基础操作就行,包含排序、筛选、数据有效性、自定义格式、插入行、删除工作表、定位对象、合并单元格、自动换行之类
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 17:27 , Processed in 0.037519 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表