Получение данных GPS из EXIF ​​изображения на C #

Я разрабатываю систему, которая позволяет загружать изображения на сервер с помощью 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.

Я знаю, что существуют классы, которые делают это, но предпочел бы писать свои собственные - я открыт для предложений: -)

Заранее спасибо.

27
задан j0k 11 September 2013 в 11:43
поделиться