【发布时间】:2013-10-03 13:00:10
【问题描述】:
我在将 GPS 坐标转换为可存储为 EXIF 信息的字节数组时遇到问题。
This questions 声明 EXIF 坐标应表示为三个有理数:degrees/1, minutes/1, seconds/1。我没有问题将十进制坐标转换为那个。例如42.1234567 很容易转换为42/1, 7/1, 24/1。
我的问题是,当我将其写入图像 EXIF 信息时,我不明白如何将其表示为字节数组。我正在使用的库称为ExifWorks,我在VB.NET 中使用它。
ExifWorks setProperty 方法需要三件事:EXIF 字段 ID、作为数据的字节数组和数据类型。以下是我的使用方法:
ew.SetProperty(TagNames.GpsLatitude, byteArrayHere, ExifWorks.ExifDataTypes.UnsignedRational)
我也试过了:
ew.SetPropertyString(TagNames.GpsLatitude, "42/1, 7/1, 24/1")
这也不起作用。
那么,我的问题是,如何将度-分-秒坐标转换为字节数组?到目前为止,我尝试过的所有内容都以无效的 EXIF 信息告终,并且不起作用。一个通用的解决方案很好......不一定必须在 VB.net 中工作。
【问题讨论】:
-
您可能应该获得 Exif 规范(可在线获得)并查看 GPS 标签的定义。然后获取一个十六进制编辑器并查看您实际写入文件的内容。另一个有用的工具是 exiftool。有趣的是,exiftool 显示了您之前链接的那个 JPEG 文件的正确 GPS 数据。
标签: vb.net gps jpeg exif exifworks