Android, хранящий GPS в формате jpeg, поврежден

Я создал простое Android-приложение, которое делает фотографию и сохраняет данные GPS устройства в exif-тегах для jpg-файла. Следующий код показывает этот процесс (я знаю, что это беспорядочно)

Android.Locations.Location loc = await client.GetLastLocationAsync();
ByteBuffer buffer = mImage.GetPlanes()[0].Buffer;
byte[] bytes = new byte[buffer.Remaining()];
buffer.Get(bytes);

using (var output = new FileOutputStream(mFile))
{
    try
    {
        output.Write(bytes);
        output.Flush();

        ExifInterface exif = new ExifInterface(mFile.AbsolutePath);
        string[] degMinSec = Location.Convert(loc.Latitude, Format.Seconds).Split(':');
        string dms = degMinSec[0] + "/1," + degMinSec[1] + "/1" + degMinSec[2] + "/1000";

        string[] degMinSec1 = Location.Convert(loc.Longitude, Format.Seconds).Split(':');
        string dms1 = degMinSec1[0] + "/1," + degMinSec1[1] + "/1" + degMinSec1[2] + "/1000";

        exif.SetAttribute(ExifInterface.TagGpsLatitude, dms);
        exif.SetAttribute(ExifInterface.TagGpsLatitudeRef, loc.Latitude < 0?"S":"N");
        exif.SetAttribute(ExifInterface.TagGpsLongitude, dms1);
        exif.SetAttribute(ExifInterface.TagGpsLongitudeRef, loc.Longitude < 0 ? "W" : "E");
        exif.SaveAttributes();

    }
    ...

Итак, теперь к проблеме: когда я делаю снимок и отлаживаю переменную loc, она выглядит так: введите здесь описание изображения

как видите, широта 48.4080605, а долгота 15.6257273.

когда я отлаживаю преобразованные значения dms и dms1, они показывают следующие значения: введите здесь описание изображения

dms представляет широту и имеет значение 48° 24' 29,0178'', dms1 представляет долготу и имеет значение 15° 37' 32,61828''.

когда я смотрю на exif-данные изображений в metapicz.com, он показывает следующие значения:

введите здесь описание изображения

может кто-нибудь объяснить мне, что происходит и что я делаю неправильно? я не могу понять, почему он показывает другое местоположение, чем должно


person Phil Noderer    schedule 23.08.2018    source источник
comment
when i look at the pictures exif-data in metapicz.com Неправильно. Вы должны сами прочитать эти значения exif сразу после того, как вставите их. И сравните.   -  person greenapps    schedule 23.08.2018
comment
когда я смотрю на них в проводнике Windows и преобразовываю их с помощью этого инструмента в десятичном виде они представляют то же местоположение, что и когда я смотрю на них с помощью metapicz.com   -  person Phil Noderer    schedule 23.08.2018
comment
string dms = degMinSec[0] + "/1," + degMinSec[1] + "/1" + degMinSec[2] + "/1000"; Разве это не должно быть string dms = degMinSec[0] + "/1," + degMinSec[1] + "/1," + degMinSec[2] + "/1000"; ?   -  person greenapps    schedule 23.08.2018
comment
Вы пробовали с этой дополнительной запятой, которую я добавил?   -  person greenapps    schedule 23.08.2018
comment
да, действительно, и я думаю, что еще одна проблема заключается в том, что метод format.seconds() возвращает запятую (,) в поле секунд, а не точку (.)   -  person Phil Noderer    schedule 23.08.2018
comment
Что проще заменить запятую на точку?   -  person greenapps    schedule 23.08.2018
comment
ничего, но так же как и с пропущенной запятой, я просто не увидел и не понял ошибку   -  person Phil Noderer    schedule 23.08.2018
comment
Ну .... все ли в порядке, когда вы применяете изменения?   -  person greenapps    schedule 23.08.2018
comment
да, проблемы устранены. Спасибо за помощь   -  person Phil Noderer    schedule 23.08.2018


Ответы (1)


dms = degMinSec[0] + "/1," + degMinSec[1] + "/1" + degMinSec[2] + "/1000"; 

Если это не так

dms = degMinSec[0] + "/1," + degMinSec[1] + "/1," + degMinSec[2] + "/1000"; 

?

person greenapps    schedule 23.08.2018