Перенос exif gps информации с одного изображения на другое


13

У меня есть камера (не мобильный телефон), которая вставляет информацию GPS Exif в фотографии.

Факт: использование «gps on» все время разряжает батарею. Поэтому я подумал: как насчет того, чтобы сделать только один снимок с включенным gps, и они дома добавят эту информацию exif другим?

Я хотел бы знать, есть ли приложения, о которых вы знаете, которые могут помочь мне в этом сценарии: имея фотографию с exif-информацией о gps, скопируйте эту же gps-информацию в пакет из других изображений.

(Я предпочитаю решения для Linux / Mac, но я также принимаю и окна. Я не против, если это приложение командной строки.)


Ответы:


13

Взгляните на ExifTool . Это швейцарский армейский нож для манипуляции информацией Exif, он может делать то, что вам нужно, помимо всего прочего. Это Windows / Linux / Mac-совместимый инструмент командной строки, а также модуль Perl. Бесплатный и открытый исходный код:

Опция "-tagsFromFile"

Специальная опция ExifTool позволяет копировать теги из одного файла в другой. Синтаксис командной строки для этого - «-tagsFromFile SRCFILE». Любые теги, указанные после этой опции в командной строке, извлекаются из исходного файла и записываются в целевой файл. Если теги не указаны, копируются все доступные для записи теги. Этот вариант очень простой, но очень мощный. В зависимости от форматов исходного и конечного файлов, некоторые из прочитанных тегов могут быть недопустимыми в конечном файле, и в этом случае они не записываются.

Следующая команда изменит все файлы в текущем каталоге и его дочерних элементах (рекурсивно), скопировав все связанные с GPS теги из файла SOURCE.JPG:

exiftool -overwrite_original_in_place -r -tagsFromFile SOURCE.JPG -gps: все.

Другой способ сделать это - поместить в скрипт следующее. Первый передаваемый параметр должен быть файлом, из которого копируются координаты GPS, а все остальные параметры являются целевыми файлами, которые необходимо обновить:

#!/usr/bin/env bash
lon=$(exiftool -s3 -GPSLongitude "$1")
lat=$(exiftool -s3 -GPSLatitude "$1")
exiftool -GPSLongitude="$lon" -GPSLatitude="$lat" "${@:2}"

2
jhead - еще одна очень полезная утилита, которая может дополнять ExifTool.
MikeyB

1
@ SomebodystillusesyouMS-DOS: Все аргументы (элементы в $@массиве), начиная со второго. Кроме того, теперь я понял, что я положил туда много ненужного (и неправильного) материала. (Также «решено».)
user1686

1
Пока вы используете сценарий, я буду продолжать оспаривать тот факт, что я полностью пропустил tagsFromFileопцию, которая могла бы сделать то же самое в одной строке ...
user1686

1
@ Grawity: Я был немного удивлен вашим редактированием :-)
haimg

2
@grawity и @haimg: exiftool −overwrite_original_in_place -r -tagsFromFile SOURCE.JPG -gps:all .- -rопция возвращается в каталог ( .), и -gps:all, ну ... это просто то, что я искал. Я победил тебя, гравитация! :) Я думаю, что вы можете отредактировать этот пост и добавить этот фрагмент, но не забудьте предупредить читателей, exiftool --helpчтобы понять другие варианты, которые я дал ... спасибо всем!
Кто-то все еще использует тебя MS-DOS

0

Вы также можете использовать exiv2 - это намного быстрее и, например, может записывать exif-данные в изображения webp (и другие).

exiv2 -PkV --grep GPSL source.jpg | exiv2 -m- destination.webp

Это пример с доски exiv2 .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.