2016-10-15 3 views
1

У меня есть специальная проблема. Я хочу использовать много изображений JPEG с заранее определенным EXIF ​​и добавить поле GPS.Добавление указателя GPSIFD в заголовок EXIF ​​без одного

Проблема в том, что эти фотографии не имеют ИФД Gps. EXIF обычно находится перед данными изображения (SOI), поэтому любая модификация EXIF ​​приведет к полной перезаписи изображения на диске. Я не хочу изменять Gigabytes изображений, чтобы добавить поле GPS.

1-й вопрос: Каковы мои варианты?

2-й вопрос: Можно ли перезаписать бесполезный тег в IFD0 с GPSInfoIFDPointer на смещение после SOI, а затем мне нужно будет добавить GPSIF и данные, которые являются операцией, поддерживаемой FAT? Разве это нарушит большинство парсеров?

ответ

1

До тех пор, пока результирующие данные Exif все еще помещаются в сегмент APP1 JPEG, и он все еще действителен Exif, вы можете добиться того, что вам нужно. Однако, если у вас есть изображения из разных источников, вы можете обнаружить, что вы не можете всегда получать исправленные данные в соответствии, поскольку может быть недостаточно тегов для удаления, чтобы создать пространство, необходимое для целого нового IFD.

Вы, к сожалению, не можете создать указатель внутри сегмента APP1, который указывает вне сегмента APP1. Некоторые читатели могут справиться с этим, но это будет очень нерегулярно и, вероятно, вызовет проблемы. Однако это не то, что я когда-либо видел.

Если вы можете удалить несколько тегов из существующих IFD, тогда у вас может быть достаточно места для написания вашего GPS IFD в создаваемом вами запасе.

Вы также можете оставить мертвое пространство в сегменте APP1. То есть вам не нужно, чтобы новые данные Exif соответствовали точно в пространстве, это просто не может быть больше, чем было раньше.

Некоторые пользователи JPEG могут позволить вам перемещать сегмент APP1 до после сегментов изображения (где вы могли бы продлить файл со своего конца без повторной записи/перемещения чего-либо), но я не пробовал это, t комментарий о том, как это сработает для вас.

+0

Hello Drew. Это звучит так, как я думал. Критическая информация, которую вы мне дали, это то, что новому exif не нужно заполнять полное пространство, оставшееся от удаленных тегов. Теперь мой подход будет состоять в том, чтобы вытащить миниатюру и, если возможно, изменить ее размер. Я дам вам знать, как это получилось. –

+0

Удачи. Это интересная проблема, и я буду очень рад услышать, как вы поживаете. –

+0

Привет, Дрю. Я сделал это. Это файл с добавленным тегом GPS: http: //www.filedropper.com/sonyilceqx101 и оригинальная фотография http://www.filedropper.com/sonyilceqx101_1 Метод, используемый libexif для загрузки exif из исходного файла, удалите миниатюру, добавьте данные GPS и найдите строковое положение «Exif» в файле. Перепишите файл с новым exif и memset оставшимся пространством. Я мог бы изменить размер миниатюры, но я нацелен на встроенную систему. Выполнение письма после окончания APP1 все еще остается. Спасибо –