Я пытаюсь написать exif некоторых изображений, чтобы сохранить геолокацию их. Запись широты, долготы и их ссылок (выше или ниже уровня моря). Все работает должным образом на Windows, читателей EXIF в Интернете и Linux. Но когда я пытаюсь открыть изображения на MAC, данные EXIF не отображаются должным образом.
Как видите, показана только высота над уровнем моря и его ссылка. Но по какой-то причине широта полностью игнорируется. Я использую следующий отрывок, чтобы написать свой exif:
/**
* Creates and sets all to the GPS tags for a give latitude and longitude.
*
* @param locationExifData a custom class which contains the GPS needed values.
* @return true if success, false if they could not be created or set.
*/
public boolean addGpsTags(LocationExifData locationExifData) {
ExifTag latTag = buildTag(TAG_GPS_LATITUDE, toExifLatLong(locationExifData.getLatitude()));
ExifTag longTag = buildTag(TAG_GPS_LONGITUDE, toExifLatLong(locationExifData.getLongitude()));
ExifTag latRefTag = buildTag(TAG_GPS_LATITUDE_REF,
locationExifData.getLatitude() >= 0 ? ExifInterface.GpsLatitudeRef.NORTH
: ExifInterface.GpsLatitudeRef.SOUTH);
ExifTag longRefTag = buildTag(TAG_GPS_LONGITUDE_REF,
locationExifData.getLongitude() >= 0 ? ExifInterface.GpsLongitudeRef.EAST
: ExifInterface.GpsLongitudeRef.WEST);
ExifTag altRefTag = buildTag(ExifInterface.TAG_GPS_ALTITUDE_REF,
locationExifData.getAltitude() >= 0 ? SEA_LEVEL : SEA_LEVEL_NEGATIVE);
if (latTag == null || longTag == null || latRefTag == null || longRefTag == null || altRefTag == null) {
return false;
}
setTag(latTag);
setTag(longTag);
setTag(latRefTag);
setTag(longRefTag);
setTag(altRefTag);
return true;
}
Кто-то знает, почему это может происходить?
PD: если я импортирую изображение в онлайн-ридер EXIF или в программу, такую как Adobe Photoshop, и заново сохраню изображение там. EXIF правильно отображается с широтой и высотой.