我正在开发一个系统,允许使用 ASP.NET C# 将图像上传到服务器。我正在处理图像,一切正常。我设法找到一种方法来读取创建日期 EXIF 数据并将其解析为日期时间。这也很好用。
我现在正在尝试从 EXIF 读取 GPS 数据。我想捕获纬度和经度数字。
我使用此列表作为 EXIF 数据的参考(使用属性项的数字)http://www.exiv2.org/tags.html http://www.exiv2.org/tags.html
这是捕获创建日期的方法(有效)。
public DateTime GetDateTaken(Image targetImg)
{
DateTime dtaken;
try
{
//Property Item 306 corresponds to the Date Taken
PropertyItem propItem = targetImg.GetPropertyItem(0x0132);
//Convert date taken metadata to a DateTime object
string sdate = Encoding.UTF8.GetString(propItem.Value).Trim();
string secondhalf = sdate.Substring(sdate.IndexOf(" "), (sdate.Length - sdate.IndexOf(" ")));
string firsthalf = sdate.Substring(0, 10);
firsthalf = firsthalf.Replace(":", "-");
sdate = firsthalf + secondhalf;
dtaken = DateTime.Parse(sdate);
}
catch
{
dtaken = DateTime.Parse("1956-01-01 00:00:00.000");
}
return dtaken;
}
下面是我对 GPS 做同样的尝试。
public float GetLatitude(Image targetImg)
{
float dtaken;
try
{
//Property Item 0x0002 corresponds to the Date Taken
PropertyItem propItem = targetImg.GetPropertyItem(2);
//Convert date taken metadata to a DateTime object
string sdate = Encoding.UTF8.GetString(propItem.Value).Trim();
dtaken = float.Parse(sdate);
}
catch
{
dtaken = 0;
}
return dtaken;
}
输出并进入 sdate 的值为“5\0\0\0\0\0\0l\t\0\0d\0\0\0\0\0\0\0\0\0\0”
这是由 iPhone 4 拍摄的图像,该图像确实带有 GPS EXIF 数据。
我知道有一些课程可以做到这一点,但我更愿意编写自己的课程 - 不过我愿意接受建议:-)
提前致谢。