Используйте DateCreated для DateTaken (CreationTime) в PNG с помощью ExifTool

У меня есть множество PNG-файлов, которые хочет сохранить моя жена и которые были сняты с нашей радионяни. Файлы названы по дате их захвата:

yyyymmdd_hhmmss.png

К сожалению, на изображении нет сохраненного DateTaken, и я хотел бы добавить его для целей регистрации и насытить монстра ОКР, рычащего в моей груди.

Я просмотрел несколько сообщений здесь, используя командную строку ExifTool, но ни один из них, похоже, не подробно описывает, как установить свойство «дата съемки» (как показано в проводнике Windows, Lightroom и т. Д.), Хотя, как я понимаю, это определено в exif как: Время создания??? (может быть).

Я пробовал много комбинаций из следующих без успеха. (Дата съемки остается пустой).

exiftool "-creationTime=-timecreated" *
exiftool "-creationTime<EXIF:DateCreated" *

В отчаянии, чтобы увидеть, если что-нибудь на самом деле происходит:

exiftool "-creationTime=now" *
exiftool.exe "-DateTimeOriginal>FileModifyDate" *
exiftool -v "-FileModifyDate>AllDates" *

Я приношу извинения; есть что-то такое простое, что мне не хватает, но после просмотра результатов Google и многочисленных сообщений здесь я не стал ближе.

Я отредактирую свой вопрос, но он отличается, поскольку мой относится к тегу createTime в PNG.
Вы можете преобразовать файлы в формат, который поддерживает правильные метаданные, например TIFF.

Ответы (2)

Пока у вас установлено имя файла, как вы упомянули, команда, которую вы хотите использовать,
exiftool "-PNG:CreationTime<Filename" FileOrDir

Как упоминает @cmason, PNG не поддерживает стандарт EXIF. У Exiftool и Exiv2 есть обходной путь, но он не получил широкой поддержки. Таким образом, теги EXIF ​​не будут установлены другими программами, если вы не установите их самостоятельно с помощью Exiftool или Exiv2.

Дата съемки — это свойство Windows, а не тег метаданных, и в случае файлов PNG она устанавливается из PNG:CreationTimeтега.

Чтобы установить свойство Windows Date Take в файле PNG на что-то другое, вы можете использовать эту команду, заменив отметку времени соответствующим образом:
exiftool -PNG:CreationTime="2017:01:10 10:45:01" FileOrDir

Изменить: просто несколько заметок о том, почему ваши предыдущие команды не работали.
exiftool "-creationTime=-timecreated" *Знак равенства присваивает значения. Итак, в этом случае вы присваиваете CreationTimeтегу значение -timecreated. Если вы хотите скопировать TimeCreatedтег, вам сначала нужно было поставить тире перед -timecreated(используется только в самом начале для обозначения операции с тегом), а затем использовать операцию копирования тега (меньше/больше символа <или >), например , -creationTime<timecreatedили -TimeCreated>CreationTime.

exiftool "-creationTime<EXIF:DateCreated" *и exiftool.exe "-DateTimeOriginal>FileModifyDate" *Правильно отформатирован, но, как уже упоминалось, PNG не поддерживает теги EXIF ​​(DateTimeCreated обычно является тегом EXIF, хотя он также может быть тегом XMP). Должно было появиться сообщение об ошибке «Нет записываемых тегов».

exiftool "-creationTime=now" *«Сейчас» — это псевдотег Exiftool для текущей даты/времени. Но знак равенства устанавливается CreationTimeдля значения now, а не для текущего DateTime. Правильная команда была бы "-CreationTime<Now".

exiftool -v "-FileModifyDate>AllDates" *Правильно отформатировано, но опять же проблема с отсутствием поддержки данных EXIF ​​в PNG. AllDates— это ярлык Exiftool для трех тегов EXIF: EXIF:DateTimeOriginal, EXIF:ModifyDate и EXIF:CreateDate.

Редактировать 2: в какой-то момент, похоже, произошли изменения в том, как Windows читает метаданные PNG. Кажется, он перестает читать фрагмент PNG IDAT, даже если за ним есть данные, что разрешено спецификацией. PNG:CreationTimeможет не отображаться должным образом при написании exiftool. См. этот пост на форуме Exiftool .

Редактировать 3: в exiftool версии 10.71 Фил Харви изменил способ, которым exiftool записывает PNG:CreationTimeтег, чтобы он соответствовал формату PNG RFC-1123 ( ссылка ссылка ). Windows, похоже, не может прочитать этот формат. Это изменение было отменено в версии 11.13 с возможностью принудительного применения спецификации PNG с помощью этой -api StrictDateопции.

PNG не поддерживает EXIF ​​в своем формате файла. Есть способы добавить определенные данные, известные как «фрагменты», но я не вижу «даты взятия» конкретно в стандарте .

Я рекомендую конвертировать все в JPG, а затем использовать инструмент EXIF ​​или Lightroom, чтобы добавить информацию о дате съемки. Если вы используете Mac, скорее всего, доступен сценарий Apple.

Спасибо за ответ. Я могу установить дату взятия свойства индивидуально в разделе сведений диалогового окна свойств в Windows. Я провел сравнение перед его установкой и после его установки и просмотра метаданных в png, это значение времени создания, которое устанавливается в PNG? Нельзя ли установить это значение? Я просто не знаю, как сослаться на это значение, чтобы установить его. Спасибо еще раз. В противном случае я буду конвертировать в JPG.
Группа разработчиков PNG в данный момент обсуждает формат предлагаемого фрагмента PNG EXIF. Обратите внимание, что PNG уже определяет ключевое слово «Время создания» для хранения даты создания в текстовом фрагменте PNG. ImageMagick/GraphicsMagick уже поддерживает сохранение всего профиля EXIF ​​(или других профилей, таких как IPTC) в фрагменте PNG zTXt и его извлечение; т. е. профиль EXIF ​​выдержит циклический переход от JPEG к PNG и обратно.