Разработвам система, която позволява изображение да бъде качено на сървър с помощта на ASP.NET C#. Обработвам изображението и всичко работи чудесно. Успях да намеря метод, който чете EXIF данните за датата на създаване и ги анализирам като DateTime. Това също работи чудесно.
Сега се опитвам да прочета GPS данни от EXIF. Искам да заснема цифрите за географска ширина и дължина.
Използвам този списък като препратка към EXIF данните (използвайки числата за елементите на свойствата) 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 данни.
Знам, че има класове, които правят това, но бих предпочел да напиша свой собствен - все пак съм отворен за предложения :-)
Благодаря предварително.