Как мне пакетно изменить дату получения информации в данных EXIF?
Я использую F-Spot для управления своими изображениями. Для одного набора изображений даты каким-то образом перепутались, и все они помечены как 1 сентября 2007 года. Я хотел бы изменить дату получения информации на другую дату. Как я могу это сделать?
13 ответов
Jhead способен сделать это.
Допустим, вы знаете, что определенная фотография была сделана на 2017-04-19 16:20
но текущая дата отображается как 2007-09-01 00:15
Вы можете настроить все jpg
Картинки в папке к нужному времени, выполнив:
jhead -da2017:04:19/16:20-2007:09:01/00:15 *.jpg
Вот выдержка из руководства:
DATE / TIME MANIPULATION:
-ft Set file modification time to Exif time
-dsft Set Exif time to file modification time
-n[format-string]
Rename files according to date. Uses exif date if present, file
date otherwise. If the optional format-string is not supplied,
the format is mmdd-hhmmss. If a format-string is given, it is
is passed to the 'strftime' function for formatting
In addition to strftime format codes:
'%f' as part of the string will include the original file name
'%i' will include a sequence number, starting from 1. You can
You can specify '%03i' for example to get leading zeros.
This feature is useful for ordering files from multiple digicams to
sequence of taking. Only renames files whose names are mostly
numerical (as assigned by digicam)
The '.jpg' is automatically added to the end of the name. If the
destination name already exists, a letter or digit is added to
the end of the name to make it unique.
-nf[format-string]
Same as -n, but rename regardless of original name
-a (Windows only) Rename files with same name but different extension
Use together with -n to rename .AVI files from exif in .THM files
for example
-ta<+|->h[:mm[:ss]]
Adjust time by h:mm backwards or forwards. Useful when having
taken pictures with the wrong time set on the camera, such as when
traveling across time zones or DST changes. Dates can be adjusted
by offsetting by 24 hours or more. For large date adjustments,
use the -da option
-da<date>-<date>
Adjust date by large amounts. This is used to fix photos from
cameras where the date got set back to the default camera date
by accident or battery removal.
To deal with different months and years having different numbers of
days, a simple date-month-year offset would result in unexpected
results. Instead, the difference is specified as desired date
minus original date. Date is specified as yyyy:mm:dd or as date
and time in the format yyyy:mm:dd/hh:mm:ss
-ts<time> Set the Exif internal time to <time>. <time> is in the format
yyyy:mm:dd-hh:mm:ss
-ds<date> Set the Exif internal date. <date> is in the format YYYY:MM:DD
or YYYY:MM or YYYY
Еще более мощный вариант - ExifTool.
В Picasa это встроено. Инструменты => Настроить дату и время....
exiv2 - инструмент командной строки для манипулирования данными exif. Поддерживаемые форматы изображений: JPEG, Canon CRW и Canon THM. PNG только для чтения.
Если вы хотите установить дату файла в exif date, вы можете использовать exiv2 со следующей опцией.
-t Установить временную метку файла в соответствии с временной меткой создания Exif в дополнение к переименованию файла (переопределяет -k). Эта опция используется только с действием "переименовать".
Попробуйте FastStone Image Viewer [ функции, ссылка для скачивания 1, ссылка для скачивания 2]
Вот что мне нужно
Добавить постоянное смещение к старой дате
exiv2 ad -a -3:17 *.JPG
Переименовать в %Y%m%d_%H%M%S
exiv2 mv *.JPG
Другие форматы и опции указаны на страницах руководства.
Установите самую старую дату из метаданных Exif или имени файла.
Шаг 0 — установите exiftool снизу
Шаг 0.1
Сохраните самый старый_datetime_config в домашней папке.C:\Users\YOURUSERNAME
или в вашем домашнем каталоге~
или в той же папке, куда вы установили exiftool. Этот шаг важен для успеха следующих шагов.
Вы можете найти их в скрипте здесь, но я обнаружил, что запуск команд в папке pic, которые я упомянул в приведенных ниже параметрах, намного быстрее, чем запуск их через скрипт Python exif-scripts/setToOldestDate.py. Для более быстрой обработки вы можете запустить эти команды непосредственно в PowerShell из папки pic, которую вы планируете.
Если вы используете WSL, запустите эти команды из poweshell, а не из WSL, поскольку чтение и запись файловой системы из виртуализации Windows взорвет вашу оперативную память и замедлит процесс до полной остановки.
Обратите внимание, что эти сценарии рекурсивны и хорошо влияют на все подпапки.
Ну… а теперь — выбирайте варианты:
Вариант 1. Если вам нужно выбрать дату из имени файла.
Это довольно гибкий и нечеткий анализатор из exiftool, но если вы хотите, чтобы он был абсолютно уверен, вы можете переименовать файл, включив в него yyyymmdd_hhmmss, и удалить все остальные числа перед ним (после - все в порядке).
exiftool "-FileModifyDate<filename" −overwrite_original -S -m -progress -ee -q -q ./
Вариант 2 – установить для всех дат самую старую дату
exiftool -overwrite_original "-FileModifyDate<OldestDateTime" "-ModifyDate<OldestDateTime" "-DateTimeOriginal<OldestDateTime" "-CreateDate<OldestDateTime" "-GPSDateTime<OldestDateTime" -S -m -progress -ee -q -q ./
Вариант 3 — задать имя файла в PXL_ггггммдд_ччммсс-[номер-если-конфликт].расширение
exiftool "-filename<OldestDateTime" -d PXL_%Y%m%d_%H%M%S%%-c.%%e -S -m -ee -progress -q -q ./
чтобы отправить все файлы в текущий каталог, используйте
adb push -a . /sdcard/DCIM/Camera/
-a — сохранить атрибуты.
⌛ Обновите Android Media Store.
В качестве последнего шага вам необходимо обновить базу данных медиа-хранилища Android, чтобы сообщить Google Photos, какие новые файлы нужно резервировать. В настоящее время он не всегда обнаруживается автоматически, так зачем этого ждать. Установите Refresh MediaStore и запустите его после завершения загрузки adb с телефона. Затем вы можете открыть Google Фото и увидеть, что резервное копирование начинается.
Я использую следующий скрипт, чтобы дать изображениям несколько последовательных дат. Надеюсь, поможет. Ожидается, что каталог с изображениями будет обработан как аргумент, т.е. script directory_with_images
#!/bin/bash
HOUR=12
MINUTE=0
DATE=2004:06:20
for file in "$1"/*;
do
exiv2 -v -M"set Exif.Image.DateTime $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
exiv2 -v -M"set Exif.Photo.DateTimeDigitized $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
exiv2 -v -M"set Exif.Photo.DateTimeOriginal $DATE $(printf %02d $HOUR):$(printf %02d $MINUTE):00" "$file"
#sets file timestamp (i.e. filesystem metadata, not image metadata) as well
exiv2 -v -T "$file"
if [ $MINUTE = 59 ]; then
HOUR=$((HOUR + 1))
MINUTE=0
else
MINUTE=$((MINUTE + 1))
fi
# this would rename the file as well
#new_path=`pwd`/new_filename$(printf %02d $HOUR)$(printf %02d $MINUTE).jpg
#cp "$file" "$new_path"
done
iPhoto и Aperture имеют опцию сдвига во времени, например, когда вы находитесь в новом часовом поясе, или часы работают неправильно. Он может либо оставить файлы неотредактированными (только обновляя базу данных приложения), либо редактировать файлы. Очевидно, что F-Spot необходимо позаимствовать это.
Кроме того, Shotwell Photo Manager в Ubuntu (текущий менеджер фотографий по умолчанию на версии 13.10) имеет меню настройки даты / времени для выбранных фотографий. В сочетании с последним фильтром импорта вы можете легко настроить импортированные фотографии с камеры с неправильной датой и временем.
Picasa 3, бесплатный инструмент для управления фотографиями от Google, сделает это быстро и красиво.
В Picasa выберите меню "Вид"> "Свойства" для отображения панели "Свойства".
Выберите папку с фотографиями, и они появятся в виде коллекции миниатюр.
Выберите эскизы, которые вы хотите обновить. Чтобы решить, какие из них обновлять как пакет, вы можете либо установить для них одинаковую новую дату-время, либо изменить первое, а все остальные будут смещены во времени на ту же сумму.
В панели "Свойства" щелкните правой кнопкой мыши поле "Дата камеры", затем выберите "Настроить дату и время" в контекстном меню. Откроется диалоговое окно "Настроить дату фото", показывающее текущую дату камеры для первой фотографии.
Отредактируйте дату и время камеры, как требуется. Если вы просто хотите изменить am на pm или наоборот, просто выберите часть времени am и введите "a" или "p" в зависимости от ситуации. Нет необходимости вводить целые слова "am" или "pm".
Существует два варианта, если вы выбрали более одного эскиза для обновления: "Отрегулировать все даты фотографий на одну и ту же сумму" или "Установить все фотографии на одну и ту же дату и время". Выберите тот, который подходит. Затем нажмите ОК.
Даты EXIF всех выбранных фотографий будут обновлены.
Для всех, кто использует Windows 10: массовое изменение определенных метаданных встроено в Проводник.
- Выберите фотографии, которые вы хотите обновить, в проводнике.
- Щелкните правой кнопкой мыши выбранную фотографию и откройте «Свойства».
- Предполагая, что вы выбрали только фотографии, вкладка «Подробности» позволит вам внести изменения.
Это работает только для присвоения одного и того же значения (например, даты съемки) каждой выбранной вами фотографии.
Exiftool: медленно в командной строке. (Это написано на Perl, поэтому сделайте свои собственные выводы там.)
Exifer создает пустой тег или два в файлах, а не только в блоке EXIF. Это также удалит некоторые теги, написанные другими инструментами. Поскольку я не использовал его более года, я не могу точно сказать, какие именно.
Программа FastStone, imx, слишком медленная, чтобы ее можно было установить более одного или двух дней.
Мой голос за Hr. Предложение Вайнцерла: Exiv2.
BZT