ExifTool не извлекает поврежденные метаданные EXIF ​​из файла JPEG. Как его отремонтировать?

Nomacs для просмотра изображений предлагает быстрый способ добавления примечаний к изображениям с помощью Exif.Image.ImageDescriptionметаданных.

После редактирования формы для my-image.jpg, я вижу это свойство в nomacs и Thunar (проводник файлов Linux Xfce).

Но exiftool этого не покажет:

exiftool my-image.jpg

После прочтения этого поста также было опробовано следующее :

exiftool -EXIF:ImageDescription my-image.jpg
exiftool -Exif:ImageDescription my-image.jpg

Мне нужен способ обработки заметок к изображениям через CLI, и я хотел бы использовать для этой цели exiftool. Отсюда: что я пропустил?

Вы пробовали exiftool -a my-image.jpgфильтровать вывод?
@RomeoNinov только что попробовал -aпереключатель, к сожалению, без дополнительного эффекта (то же самое с -e, -ee, -u).
Для меня это означает, что программное обеспечение не сохраняет заметку в изображении, возможно, это ошибка.
Хм, это странно. Проводник Thunar полностью независим от nomacs, а также показывает мне для my-image.jpg-> Свойства -> Изображение -> Описание -> test123, где test123был мой данный текст заметки.
Пробовали ли вы использовать команду exiftool FAQ #3 и выполнять поиск по всем данным в файле, чтобы увидеть фактическое местоположение ваших данных?
Я только что установил nomacs и протестировал функцию «Панели» -> «Примечания к изображениям» по вашей ссылке, и она правильно написала в EXIF:ImageDescription.
Большое спасибо за тестирование. Позвольте мне попробовать это на другой машине, чтобы исключить неопределенность.
@StarGeek ах, я вижу - моя проблема скорее связана с сетевой файловой системой/путем/разрешениями, а не с nomacs или exiftool. Если я повторю ту же последовательность с файлом изображения, который хранится где-то на пути к локальному диску, метаданные будут записаны правильно. В любом случае, большое спасибо за то, что указали мне правильное направление! Думаю, мне нужно немного глубже изучить, почему это происходит с сетевыми файлами.
Обновление: нет, с сетью проблем тоже не было. Похоже, некоторые файлы изображений настолько повреждены, что exiftool больше не может/отказывается читать метаданные. Некоторые изображения в моем сетевом хранилище можно изменить, другие нет.
Они все в формате jpg или есть какой-то другой формат? Например, файлы BMP не могут содержать никаких метаданных.
Да, все они .jpg. К сожалению, я не могу поделиться ими здесь, как с корпоративными файлами. Я вижу, можно ли это воспроизвести с общедоступными файлами.
Я заметил, что nomacs фактически не сохраняет данные в файле, пока вы не закроете программу. Поэтому, хотя я несколько раз нажимал значок сохранения, в exiftool ничего не будет отображаться, пока я не выйду из программы.
@StarGeek хороший совет, может подтвердить проблемы с задержкой. Но конкретный файл .jpg на самом деле , кажется, имеет поврежденные метаданные, я не могу записать файл ImageDescription. Есть ли способ (желательно с помощью exiftool) очистить/дезинфицировать область хранения метаданных изображения, чтобы попробовать ее заново?
@ramo, для очистки вы можете использовать командуexiftool -all= path_to_file
@RomeoNinov работает, спасибо! Конечно, это удаляет все другие метаданные, но хорошо, если метаданные изображения, по-видимому, содержат ошибки в целом. Вы можете опубликовать это как ответ, если хотите, и я с радостью приму его.
Я бы предложил exiftool FAQ #20 , который максимально перепишет метаданные и сохранит их. Дополнительное примечание: НИКОГДА не используйте -all=или часто задаваемые вопросы 20 для изображений RAW (NEF, ARW, CR2 и т. д.), поскольку такие изображения могут безвозвратно испортить их. ЭТА: ах, я вижу, @ramo опередил меня.

Ответы (2)

На основании обсуждения в комментариях кажется, что метаданные этого файла изображения повреждены. Что вы можете сделать, так это очистить метаданные и повторить попытку:

exiftool -all= path_to_file

Имейте в виду, что это приведет к удалению всех метаданных из файла. Если вы хотите удалить только определенные метаданные, вы можете использовать команду, например:

exiftool -EXIF:ImageDescription= path_to_file

Чтобы получить точное имя, вы можете использовать команду:

exiftool -a path_to_file
Отлично. Когда у меня будет больше представителей, я также проголосую за ваш ответ.
Кстати: я также нашел метод, который пытается сохранить существующие теги и опубликовать это как альтернативный ответ.
@ramo отвечает тебе. "="

(В дополнение к отличному ответу Ромео Нинова )

Существует альтернатива Exiftool FAQ , которая пытается восстановить метаданные файла JPEG и сохранить существующие теги:

exiftool -all= -tagsfromfile @ -all:all -unsafe -icc_profile my-image.jpg

ExifTool можно использовать для устранения проблем с метаданными в изображениях JPEG путем удаления всех метаданных и восстановления их с нуля. [...]

Эта команда удаляет все метаданные, а затем копирует все доступные для записи теги, которые можно извлечь из исходного изображения, в те же места обновленного изображения. Тег "Unsafe"является ярлыком для небезопасных тегов EXIF ​​в изображениях JPEG, которые обычно не копируются. Изображения JPEG могут также содержать цветовой профиль ICC, который следует сохранить. Тег "ICC_Profile"также помечен как небезопасный, но не является частью EXIF, поэтому на него не распространяется ярлык, "Unsafe"и его необходимо указывать отдельно.

После восстановления такого образа вы сможете писать в него без ошибок, но обратите внимание, что некоторые метаданные из исходного изображения могут быть потеряны в процессе .

Примечание. ExifTool не будет изменять данные изображения JPEG, поэтому, если само изображение повреждено (например, если вы получили сообщение «Недопустимый JPEG»), ExifTool нельзя использовать для восстановления изображения. Кроме того, ExifTool нельзя использовать таким образом для восстановления файлов на основе TIFF или файлов RAW — риск повреждения изображения слишком велик, поскольку изображение хранится в том же IFD, что и метаданные в этих файлах.