有人成功地使用WPF类
BitmapMetadata
读取GPS数据吗?这个类内部使用WIC(Windows Imaging Component)。我有一张图片,Windows(8.1)资源管理器和外部工具如XnView都显示了GPS坐标。我尝试使用类BitmapFrame
的属性Metadata
提取这些数据:var md = (BitmapMetdata)extractedFrame.Metadata;
var altitude = md.GetQuery("System.GPS.Altitude");
var altitudeProxy = md.GetQuery("System.GPS.Altitude.Proxy");
var altitudeRef = md.GetQuery("System.GPS.AltitudeRef");
var longitude = md.GetQuery("System.GPS.Longitude");
var longitudeProxy = md.GetQuery("System.GPS.Longitude.Proxy");
var longitudeRef = md.GetQuery("System.GPS.LongitudeRef");
var latitude = md.GetQuery("System.GPS.Latitude");
var latitudeProxy = md.GetQuery("System.GPS.Latitude.Proxy");
var latitudeRef = md.GetQuery("System.GPS.LatitudeRef");
altitude
(System.Double)、altitudeRef
(System.Byte)、longitudeRef
(System.String) 和 latitudeRef
(System.String) 的结果都正常,并且检索到了合理的数据("510.70", "0", "N", "E")。
longitude
和 latitude
应该是 System.Double 数组类型,但它们始终为 NULL。
使用 ".Proxy" 后缀返回的结果是奇怪的字符串数据,我不确定如何解析它们,也不确定它们是否与区域设置无关:MSDN 文档中没有提到字符串;但至少在那里可以获取到 Longitude 和 Latitude 的“有效”数据。
这是一个 bug 还是我错过了什么?
meta.GetQuery()
还有两个额外的键,也可以返回ulong[]
:"/xmp/exif:GPSLatitude" 和 "/xmp/exif:GPSLongitude"。 - springy76