我在我的 Ubuntu 机器上拍摄了一些照片,我想知道它们是否包含地理位置,如果是,它们是什么。
我怎样才能做到这一点?
答案1
exiftool
可用于打印图像的元数据。如果在拍摄图像时存储了位置(通常称为“地理标记'),您可以在那里找到它:
$ exiftool 23.jpg | grep GPS
GPS Latitude Ref : North
GPS Longitude Ref : East
GPS Latitude : 35 deg 32' 16.80" N
GPS Longitude : 139 deg 29' 49.20" E
GPS Position : 35 deg 32' 16.80" N, 139 deg 29' 49.20" E
$
您还可以使用 exiftool 从现有图像中去除 GPS 信息:
$ exiftool -gps:all= 23.jpg
1 image files updated
$ exiftool 23.jpg | grep GPS
$
任何可以查看图像元数据的工具都可以查看此信息。例如,identify
ImageMagic 的工具也可以这样做:
$ identify -verbose 23.jpg | grep GPS
exif:GPSInfo: 640
exif:GPSLatitude: 35/1, 3228/100, 0/1
exif:GPSLatitudeRef: N
exif:GPSLongitude: 139/1, 2982/100, 0/1
exif:GPSLongitudeRef: E
$
并且 GUI 工具通常也可以这样做 - 这是来自 Ubuntu 18 的图像查看器:
许多图像的元数据中没有 GPS 条目 - 例如,如果你用没有 GPS 的相机拍照,它就不会存储它 - 这里有一个相机列表那做有GPS。
答案2
此命令将检查目录中的照片并查找 Exif 中是否保存了地理标签。它将报告发现数据的那些:
for f in *.jpg; do CMD="$(exiftool -a -gps:all "$f" 2>/dev/null | grep "GPS Latitude")"; RET=$?; if [ "$RET" -eq "0" ]; then echo "$f"; fi; done
如果您想要自动解析计算机可读格式的地理信息,以便进一步处理坐标,您可以使用此
exiftool -c "%+.6f" "$1" |grep "GPS Position" | cut -d":" -f2 | tr -d ' '
此工具(bash 脚本)自动对作为参数传递给它的文件执行此操作: https://gist.github.com/pas-calc/0e6063affa749fedc2e51cea88345929。结果将显示在地理工具网站。
答案3
如果您的文件管理器是 Nemo,那么可插入操作集合可能会有所帮助:https://github.com/sn-ushakov/exif-gps-mapping-nemo。它允许在 Nemo 的弹出窗口中显示媒体文件的 Exif 元数据,以及在 OpenStreetMap、Google Maps 或任何其他地图中显示拍摄地点。屏幕截图可在 README 中找到...