JHead: утилита для работы с JPEG-метаданными
JHead EXIF JPEG Manipulation Tool — это небольшая консольная программа для просмотра, очистки и частичного редактирования EXIF-данных в JPEG-файлах. В обычной работе ее называют просто JHead, а запускается она командой jhead из терминала, командной строки Windows, PowerShell, macOS Terminal или Linux shell. Программа не открывает фотографию как редактор изображений, не показывает холст, не предлагает панель инструментов и не работает с картинкой через кнопки. Ее зона — не пиксели, а служебная часть JPEG-файла: EXIF-заголовок, дата съемки, модель камеры, параметры экспозиции, встроенная миниатюра, GPS-данные, IPTC, XMP и JPEG-комментарии.
Скачать JHead
Для сжатия и оптимизации файлов
JHead ориентирована именно на такие задачи: посмотреть метаданные фотографии, привести в порядок дату съемки, массово переименовать JPEG по времени кадра, удалить EXIF перед публикацией, извлечь встроенную миниатюру, очистить файл от лишних секций или повернуть снимок по тегу Orientation через jpegtran.

На практике JHead полезна там, где графический фоторедактор будет лишним. Например, есть папка с сотнями фотографий после поездки, часть кадров сделана на камеру с неверно выставленным временем, часть уже повернута визуально, но в EXIF остался неправильный тег ориентации, а часть снимков нужно подготовить к публикации без GPS-координат и информации о камере. В такой ситуации не нужно открывать каждый JPEG вручную. Достаточно выполнить одну команду в каталоге, и JHead обработает сразу все файлы, подходящие под маску *.jpg.
Главная особенность программы — точечная работа с JPEG-метаданными без тяжелого интерфейса. JHead показывает EXIF-данные в понятном виде: Camera make, Camera model, Date/Time, Resolution, Flash used, Focal length, Exposure time, Aperture, ISO equiv., Whitebalance, Metering Mode, GPS Latitude, GPS Longitude, JPEG Quality и другие поля, если они присутствуют в файле. Такой вывод удобен не только фотографу, но и администратору фотобазы, владельцу архива, веб-мастеру, который готовит изображения для сайта, или пользователю, которому нужно быстро понять, что именно записано внутри JPEG.
JHead не пытается заменить полноценные редакторы метаданных вроде ExifTool. Ее сильная сторона в другом: программа маленькая, быстрая, предсказуемая и хорошо подходит для повторяемых команд. Она не заставляет разбираться в десятках вкладок, не требует импортировать фотографии в каталог и не меняет изображение без прямой команды. Пользователь сам указывает, что делать: вывести информацию, удалить EXIF, сдвинуть дату, записать дату файла из EXIF, переименовать снимки, извлечь миниатюры или обработать JPEG через внешний инструмент.
У JHead нет окон с кнопками Open, Save, Export, Preferences или Batch Process. Ее элементы управления — параметры запуска: -h, -v, -c, -ft, -dsft, -n, -ta, -da, -ts, -ds, -de, -dx, -di, -dc, -purejpg, -mkexif, -st, -dt, -rt, -rgt, -autorot, -norot, -te, -cmd, -model, -exonly. Именно через них выполняются реальные задачи программы.
Содержание
- 1 Кому подойдет JHead
- 2 Что умеет JHead
- 3 Интерфейс и принцип работы
- 4 Установка JHead на Windows, Linux и macOS
- 5 Просмотр EXIF-данных в JPEG
- 6 Работа с датой и временем съемки
- 7 Пакетное переименование фотографий
- 8 Удаление EXIF, XMP, IPTC и лишних секций JPEG
- 9 Миниатюры EXIF: извлечение, удаление и обновление
- 10 Автоматический поворот JPEG по тегу Orientation
- 11 Перенос EXIF из оригинала в отредактированный JPEG
- 12 Работа с JPEG-комментариями
- 13 Автоматизация через -cmd
- 14 Ограничения JHead
- 15 Сравнение с аналогами
- 16 Практические сценарии использования
- 16.1 Подготовка JPEG перед публикацией
- 16.2 Исправление времени после поездки
- 16.3 Исправление сброшенной даты камеры
- 16.4 Сортировка фотографий из нескольких камер
- 16.5 Восстановление EXIF после редактирования
- 16.6 Автоповорот старых фотографий
- 16.7 Удаление встроенных EXIF-миниатюр
- 16.8 Отбор файлов по модели камеры
- 16.9 Быстрый аудит папки
- 17 Плюсы и минусы
- 18 Итог
Кому подойдет JHead
JHead лучше всего подходит пользователям, которые работают с JPEG-фотографиями не поштучно, а папками. Это может быть домашний архив за несколько лет, съемка с мероприятия, каталог фотографий товаров, папка после импорта с камеры, набор изображений перед загрузкой на сайт или подборка кадров, которую нужно очистить от лишней информации. В таких задачах программа дает прямой выигрыш: одна команда обрабатывает десятки, сотни или тысячи файлов.
Фотографу JHead пригодится для проверки параметров съемки. Вывод jhead photo.jpg быстро показывает, какой камерой сделан кадр, с какой выдержкой, диафрагмой, ISO, фокусным расстоянием и вспышкой. Это удобно, когда нужно разобрать серию снимков и понять, почему одни кадры получились резкими, а другие нет, почему вспышка сработала в одном файле и не сработала в другом, или какие параметры использовались на старой камере.
Для владельца архива важнее другие функции: исправление даты, синхронизация системного времени файла с EXIF, переименование фотографий по дате съемки и сортировка снимков из разных камер. Если файлы называются IMG_0001.JPG, DSC01983.JPG, P1000456.JPG, то по имени они почти ничего не сообщают. Команда jhead -n%Y%m%d-%H%M%S *.jpg превращает хаотичные имена в понятную структуру вроде 20240518-143522.jpg, где сразу видны дата и время кадра. Такой подход особенно удобен после свадеб, поездок, корпоративов и любых событий, где одновременно использовались разные камеры.
Для веб-мастера и владельца сайта JHead полезна как инструмент подготовки изображений перед публикацией. JPEG-файл может содержать модель камеры, дату съемки, GPS-координаты, встроенную миниатюру, комментарии редактора, XMP-блок от Photoshop или IPTC-данные. Если эти сведения не должны попадать в открытый доступ, можно удалить их командой jhead -purejpg *.jpg или более точечно — -de, -dx, -di, -dc. При этом сама программа не превращает работу в сложный процесс: она выполняет конкретную операцию над указанными файлами.
Разработчикам и администраторам JHead удобна из-за предсказуемого CLI-формата. Команды легко вставлять в .bat, .cmd, shell-скрипты, cron-задачи, обработчики загрузок и локальные сценарии сортировки. Программа выводит результат в терминал, умеет работать с масками файлов, поддерживает краткий вывод через -c, а в Windows-версии использует расширенное сопоставление имен, включая рекурсивный шаблон ** для поиска JPEG во вложенных папках.
Не стоит выбирать JHead тем, кому нужен визуальный редактор метаданных с таблицей тегов, ручным редактированием каждого поля EXIF, предпросмотром изображения, картой GPS и кнопками для импорта или экспорта. Для этого лучше подходят другие программы. JHead раскрывается там, где пользователь понимает, какую операцию нужно выполнить, и готов записать ее одной строкой.
Что умеет JHead
JHead умеет читать и выводить основные данные из EXIF-заголовка JPEG-файла. При обычном запуске без дополнительных параметров программа показывает имя файла, размер, системную дату, производителя камеры, модель камеры, дату и время съемки, разрешение, сведения о вспышке, фокусное расстояние, ширину CCD, выдержку, диафрагму, дистанцию фокусировки, режим замера, ISO, баланс белого и качество JPEG. Если в файле есть GPS-данные, IPTC или XMP, JHead также может их обнаружить и показать.
Пример базовой команды:
jhead photo.jpg
Для папки:
jhead *.jpg
Для краткого однострочного вывода:
jhead -c *.jpg
Параметр -c удобен, когда нужно быстро просмотреть много файлов, отфильтровать вывод через grep или импортировать сведения в таблицу. Вместо длинного блока по каждому снимку JHead выводит сводную строку. Это не самый красивый формат для чтения глазами, зато он хорошо подходит для массового анализа.
Отдельная группа функций связана с датой и временем. JHead умеет выставлять системную дату файла по EXIF (-ft), записывать EXIF-время из системного времени файла (-dsft), сдвигать внутренние EXIF-даты на нужный интервал (-ta), корректировать дату через разницу между двумя календарными датами (-da), задавать точное значение даты и времени (-ts) или менять только дату (-ds). Для архивов это одна из самых важных возможностей программы, потому что неверная дата съемки ломает сортировку, фотокаталоги, облачные галереи и хронологию событий.
JHead также умеет переименовывать JPEG по EXIF-полю DateTimeOriginal. Команда -n использует форматную строку, похожую на strftime: %Y — год, %m — месяц, %d — день, %H — часы, %M — минуты, %S — секунды. Можно добавить исходное имя через %f и порядковый номер через %i. Если итоговое имя уже существует, JHead автоматически добавляет суффикс, чтобы не перезаписать файл.
Пример:
jhead -n%Y%m%d-%H%M%S *.jpg
Такой запуск переименует файлы по шаблону YYYYMMDD-HHMMSS. Если снимок был сделан 18 мая 2024 года в 14:35:22, итоговое имя будет похоже на 20240518-143522.jpg.
Для очистки JPEG предусмотрены отдельные параметры. -de удаляет EXIF-заголовок, -dx удаляет XMP-секцию, -di удаляет IPTC-секцию, -dc удаляет JPEG-комментарий, а -purejpg удаляет все JPEG-секции, которые не нужны для отображения изображения. Это делает JHead полезной программой для удаления EXIF из JPEG, подготовки файлов к публикации и уменьшения лишней служебной информации.
Еще одна практичная функция — работа со встроенными EXIF-миниатюрами. Многие камеры сохраняют внутри JPEG маленькое превью, которое используется файловыми менеджерами и просмотрщиками. После редактирования изображения такая миниатюра может устареть: основной снимок уже повернут или кадрирован, а миниатюра внутри EXIF показывает старую версию. JHead умеет сохранять миниатюру (-st), удалять ее (-dt), заменять (-rt) и регенерировать (-rgt) при наличии подходящих внешних инструментов.
JHead умеет приводить фотографию в нормальную ориентацию по EXIF-тегу Orientation. Параметр -autorot использует этот тег и запускает jpegtran, чтобы повернуть JPEG без обычного пересохранения через фоторедактор. После поворота тег ориентации сбрасывается в нормальное значение. Параметр -norot делает другое: он очищает тег ориентации без изменения изображения. Это полезно, когда картинка уже повернута правильно, но браузер, просмотрщик или CMS снова разворачивает ее из-за оставшегося EXIF-тега.
Отдельно стоит выделить перенос EXIF из одного файла в другой. Параметр -te используется, когда изображение было обработано в редакторе, а метаданные потерялись. Сценарий типичный: в папке originals лежат исходники с правильными данными камеры, а в рабочей папке — JPEG после обработки, но без EXIF. Команда переносит EXIF-заголовок из оригинала в новый файл. Это не универсальный редактор всех тегов, но для восстановления сведений после обработки функция очень полезна.
Интерфейс и принцип работы
Интерфейс JHead — это командная строка. На Windows программа запускается из Command Prompt, PowerShell или Windows Terminal. На macOS — из Terminal. На Linux — из стандартного терминала оболочки, например Bash или Zsh. У программы нет графического окна, панели настроек, меню, вкладок и кнопок. Все действия выполняются через синтаксис:
jhead [options] [file...]
В этой строке jhead — имя исполняемого файла, [options] — параметры операции, а [file...] — один файл, список файлов или маска. Если нужно посмотреть EXIF одного изображения, команда короткая:
jhead IMG_0001.JPG
Если нужно обработать все JPEG в папке:
jhead *.jpg
Если нужно работать и с .jpg, и с .JPG, на Linux и macOS обычно нужно учитывать регистр файловой системы и запускать команды для обеих масок:
jhead *.jpgjhead *.JPG
В Windows поведение с масками отличается, а Windows-версия JHead умеет обрабатывать более сложные шаблоны путей. Например, можно использовать путь с несколькими уровнями подкаталогов:
jhead c:pix199***.jpg
Для рекурсивного поиска JPEG по диску в Windows применяется ** как отдельный компонент пути:
jhead c:***.jpg
Такой формат удобен, когда архив лежит не в одной папке, а распределен по годам, месяцам, поездкам и событиям.
Чтобы увидеть доступные параметры, используется команда:
jhead -h
Она выводит краткую справку по опциям. Для проверки версии и даты сборки используется:
jhead -V
Для более подробного вывода применяется:
jhead -v photo.jpg
Для тихой обработки без сообщений об успешных действиях:
jhead -q *.jpg
А для краткой строки по каждому файлу:
jhead -c *.jpg
В работе JHead важно понимать порядок команды. Параметры пишутся после jhead, затем указываются файлы. Например:
jhead -ft *.jpg
Эта команда не просто показывает данные, а меняет системное время файлов, выставляя его по EXIF-дате. Команда:
jhead -de *.jpg
удаляет EXIF из всех JPEG, подходящих под маску. Поэтому перед массовой обработкой лучше сначала выполнить команду на копии одного файла:
jhead -de test.jpg
После проверки результата можно запускать обработку всей папки. Это нормальная дисциплина при работе с командными утилитами, которые реально меняют файлы.
Терминальный формат делает программу быстрой, но требует аккуратности. Если в имени файла есть пробелы, путь нужно заключать в кавычки:
jhead "Vacation 2024/IMG 0001.jpg"
То же правило действует для параметров с &i, потому что символ & в командных оболочках часто имеет специальное значение:
jhead -st "thumbnails/&i" *.jpg
JHead не спрашивает подтверждение перед каждой правкой. Если команда корректная, программа выполняет ее сразу. Поэтому для операций удаления (-de, -dx, -di, -dc, -purejpg), массового переименования (-n) и изменения времени (-ta, -da, -ts, -ds) безопаснее работать с резервной копией.
Установка JHead на Windows, Linux и macOS
На Linux JHead часто доступна через стандартные репозитории. В Debian/Ubuntu-подобных системах установка выполняется командой:
sudo apt install jhead
После установки можно проверить запуск:
jhead -V
Если команда находится в системном пути, терминал выведет сведения о версии. Если система пишет, что команда не найдена, нужно проверить установку пакета или путь к исполняемому файлу.
На macOS JHead доступна через Homebrew:
brew install jhead
В Homebrew формула jhead описана как утилита для извлечения параметров цифровой камеры из EXIF-заголовков JPEG. Также программу можно собрать из исходников. В репозитории JHead есть исходные файлы на C, makefile, makefile-win32 и make.bat. Для Linux сборка обычно сводится к запуску:
make
Для Windows используется make.bat при наличии компилятора Visual C в переменной PATH. Такой вариант нужен не всем: обычному пользователю проще поставить готовый пакет, но сборка из исходников полезна, когда нужно получить исполняемый файл для конкретной системы или встроить JHead в свой рабочий набор инструментов.
На Windows программа обычно представляет собой jhead.exe. Ее можно положить в отдельную папку, например:
C:Toolsjhead
Чтобы запускать jhead из любой папки, путь к jhead.exe добавляют в переменную среды PATH. После этого в Command Prompt или PowerShell можно перейти в папку с фотографиями:
cd C:PhotosTrip
и выполнить:
jhead *.jpg
Без добавления в PATH программу тоже можно запускать, но придется указывать полный путь:
C:Toolsjheadjhead.exe *.jpg
На macOS и Linux при ручной установке исполняемому файлу может потребоваться право запуска:
chmod +x jhead
Затем его можно переместить в каталог, который уже есть в PATH, например /usr/local/bin:
sudo mv jhead /usr/local/bin/
После этого команда jhead будет доступна из любого каталога.
Просмотр EXIF-данных в JPEG
Базовая задача JHead — просмотр EXIF JPEG. Для этого не нужно знать структуру EXIF, номера тегов или внутреннее устройство JPEG. Достаточно указать файл:
jhead Canon_40D.jpg
Программа выводит понятную сводку. Типичный блок содержит имя файла, размер, дату файла, производителя камеры, модель камеры, дату и время съемки, разрешение, вспышку, фокусное расстояние, выдержку, диафрагму, ISO, баланс белого, режим замера, режим экспозиции и GPS-строки, если координаты присутствуют.
Такой вывод удобен, когда нужно быстро понять происхождение файла. Например, строка Camera make : Canon показывает производителя камеры, Camera model : Canon EOS 40D — модель, Date/Time : 2008:05:30 15:56:01 — дату съемки, Exposure time : 0.0063 s (1/160) — выдержку, Aperture : f/7.1 — диафрагму, ISO equiv. : 100 — ISO. Если фотография была сделана телефоном или камерой с GPS, в выводе могут быть GPS Latitude и GPS Longitude.
Для папки команда выглядит так:
jhead *.jpg
JHead пройдет по каждому файлу и выведет блок по каждому JPEG. Если изображений много, такой вывод становится длинным. В этом случае удобнее использовать краткий режим:
jhead -c *.jpg
Краткий режим полезен при поиске конкретных файлов. Например, можно вывести все данные в одну строку и отфильтровать по модели камеры:
jhead -c *.jpg | grep "Canon"
Или использовать встроенный фильтр JHead по модели:
jhead -model "Canon" *.jpg
Параметр -model ограничивает обработку файлами, у которых в EXIF-модели камеры есть указанная подстрока. Это удобно, если в одной папке лежат снимки с нескольких устройств: зеркальной камеры, смартфона, экшн-камеры и сканера.
Для более подробной диагностики используется:
jhead -v photo.jpg
Режим -v делает вывод более подробным. Он подходит, когда обычной сводки недостаточно или нужно понять, как программа обрабатывает конкретный файл. Для поврежденных или странных EXIF-заголовков есть параметр:
jhead -exifmap photo.jpg
Он показывает карту байтов в EXIF-заголовке. Для обычной работы с фотографиями этот режим почти не нужен, но он полезен при анализе нестандартных файлов, диагностике некорректных EXIF-блоков и разработке.
Работа с датой и временем съемки
Дата и время — одна из главных причин использовать JHead. Фотографии часто попадают в архив с неправильной датой: камера сбросила настройки после замены аккумулятора, пользователь забыл поменять часовой пояс, летнее время не было учтено, смартфон записал локальное время иначе, чем основная камера, или файлы после копирования получили новую системную дату. В результате фотографии сортируются неправильно, а фотокаталог показывает событие не в тот день.
JHead работает с двумя разными сущностями: системной датой файла и датой внутри EXIF. Системная дата — это время изменения файла в файловой системе. EXIF-дата — это дата съемки, записанная в сам JPEG. Чаще всего важнее именно EXIF-поле DateTimeOriginal, потому что оно отражает момент съемки, а не момент копирования или редактирования.
Параметр -ft выставляет системную дату файла по дате из EXIF:
jhead -ft *.jpg
Эта команда полезна после копирования фотографий, когда файловая система показывает дату переноса, а не дату съемки. После -ft сортировка файлов по дате изменения снова начинает соответствовать времени кадра.
Обратная задача решается параметром -dsft:
jhead -dsft *.jpg
Он записывает EXIF-время из системной даты файла. Для этого в JPEG уже должен быть EXIF-заголовок. Если EXIF отсутствует, сначала можно создать минимальный заголовок через -mkexif, но нужно понимать ограничение: такой EXIF содержит только дату и время и пустые поля миниатюры, а не полный набор сведений камеры.
Для сдвига времени используется -ta. Формат — +h:mm, -h:mm, +h:mm:ss или -h:mm:ss. Например, камера отставала на 1 час 30 минут:
jhead -ta+1:30 *.jpg
Если камера спешила на 12 минут:
jhead -ta-0:12 *.jpg
Если после перелета из одного часового пояса в другой камера осталась на старом времени, можно сдвинуть всю папку:
jhead -ta+3:00 *.jpg
Параметр -ta берет время из DateTimeOriginal и меняет все EXIF-поля времени на новое значение. Это важно: программа не просто меняет одну строку, а синхронизирует внутренние EXIF-даты.
Для исправления неправильной календарной даты есть -da. Он задается как разница между правильной и неправильной датой:
jhead -da2024:05:18-2023:05:18 *.jpg
Такой вариант лучше простого сдвига на часы, когда ошибка крупная: неправильный год, месяц или день после сброса камеры. JHead рассчитывает фактическую разницу между датами с учетом календаря, високосных годов и переходов времени. Формат может включать и время:
jhead -da2024:05:29/11:21-2002:01:01 *.jpg
Для точной установки даты и времени используется -ts:
jhead -ts2024:05:18-14:35:22 photo.jpg
Этот параметр задает полную дату и время в EXIF. Он подходит для отдельных файлов или небольших наборов, когда известно точное время съемки.
Если нужно изменить только дату, используется -ds:
jhead -ds2024:05:18 *.jpg
Можно указать только год и месяц:
jhead -ds2024:05 *.jpg
Или только год:
jhead -ds2024 *.jpg
Такой режим полезен для старых сканов и архивных JPEG, где точное время неизвестно, но нужно хотя бы правильно указать год или месяц.

В практической работе с датами безопасный порядок такой:
-
Скопировать папку с фотографиями.
-
Проверить несколько файлов командой
jhead photo.jpg. -
Выполнить сдвиг на одном тестовом файле.
-
Снова проверить
jhead photo.jpg. -
Запустить команду на всю папку.
-
После правки выполнить
jhead -ft *.jpg, если нужно синхронизировать системную дату файла с EXIF.
Пример полного сценария:
cp -r photos photos_backupcd photosjhead IMG_0001.JPGjhead -ta+2:00 IMG_0001.JPGjhead IMG_0001.JPGjhead -ta+2:00 *.JPGjhead -ft *.JPG
Такой подход сохраняет резервную копию и дает возможность проверить результат до массовой обработки.
Пакетное переименование фотографий
Переименование по дате съемки — одна из самых практичных функций JHead. Камеры обычно создают имена вроде IMG_0001.JPG, DSC_1234.JPG, P1020456.JPG. Такие имена быстро повторяются, плохо описывают содержимое и не помогают сортировать кадры из разных источников. JHead решает это через параметр -n.
Самый частый вариант:
jhead -n%Y%m%d-%H%M%S *.jpg
Файл получает имя по шаблону:
20240518-143522.jpg
Здесь %Y — год из четырех цифр, %m — месяц, %d — день, %H — часы, %M — минуты, %S — секунды. Формат получается компактным и удобным для сортировки: файловый менеджер выстраивает снимки в хронологическом порядке даже без чтения EXIF.
Можно добавить исходное имя:
jhead -n%Y%m%d-%H%M%S-%f *.jpg
Тогда файл вроде IMG_0001.JPG станет похож на:
20240518-143522-IMG_0001.jpg
Это удобно, если исходные имена нужно сохранить для связи с каталогом, карточкой заказа, выгрузкой или папкой клиента.
Если несколько кадров имеют одинаковую секунду съемки, можно добавить порядковый номер:
jhead -n%Y%m%d-%H%M%S-%03i *.jpg
%03i даст номера с ведущими нулями: 001, 002, 003. Если целевое имя уже существует, JHead добавит к нему суффикс, чтобы не заменить существующий файл.
JHead умеет не только переименовывать, но и перемещать файлы в новые папки, если в формате имени есть / или . Например:
jhead -n%Y/%m/%Y%m%d-%H%M%S *.jpg
Такая команда разложит файлы по папкам года и месяца. Файл может попасть в путь:
2024/05/20240518-143522.jpg
Если нужной папки нет, JHead создаст ее автоматически. Это удобно для архивации: после одной команды разрозненные фотографии превращаются в структуру по датам.
На Windows при использовании такой команды в .bat-файле символ % нужно удваивать, потому что Windows batch использует % для собственных переменных. В интерактивной командной строке можно писать:
jhead -n%Y%m%d-%H%M%S *.jpg
А в .bat-файле:
jhead -n%%Y%%m%%d-%%H%%M%%S *.jpg
Это важная практическая деталь: если вставить обычный формат в batch-файл, Windows может неправильно разобрать строку еще до запуска JHead.
Пакетное переименование особенно полезно, когда мероприятие снимали на две или три камеры. Сначала нужно синхронизировать время камер через -ta или -da, затем переименовать файлы по EXIF-дате. После этого фотографии можно объединить в одну папку, и они будут идти в порядке реальной съемки.
Пример:
cd camera_ajhead -ta+0:00 *.jpgjhead -n%Y%m%d-%H%M%S-A-%03i *.jpgcd ../camera_bjhead -ta-0:07 *.jpgjhead -n%Y%m%d-%H%M%S-B-%03i *.jpg
Суффиксы A и B помогают понимать источник кадра, а время в имени сохраняет общую хронологию.
Удаление EXIF, XMP, IPTC и лишних секций JPEG
JHead хорошо подходит для очистки JPEG перед публикацией. Метаданные фотографии могут содержать не только технические параметры, но и сведения, которые не должны уходить наружу: GPS-координаты, модель камеры, дату съемки, комментарии программ, IPTC-подписи, XMP-блоки, внутренние миниатюры. Даже если на сайте изображение выглядит обычным, внутри файла могут остаться служебные секции.
Для удаления EXIF используется:
jhead -de photo.jpg
Для всей папки:
jhead -de *.jpg
-de удаляет EXIF-заголовок целиком, но оставляет другие секции, например IPTC, XMP или JPEG-комментарий, если они есть. Это удобно, когда нужно убрать данные камеры, но не трогать другую служебную информацию.
Для удаления IPTC:
jhead -di *.jpg
Для удаления XMP:
jhead -dx *.jpg
Для удаления JPEG-комментария:
jhead -dc *.jpg
JPEG-комментарий — это не то же самое, что EXIF-комментарий. -dc работает именно с comment field в JPEG-заголовке и не редактирует комментарий, который может находиться внутри EXIF.
Если нужно очистить файл максимально просто, используется:
jhead -purejpg *.jpg
-purejpg удаляет JPEG-секции, которые не нужны для отображения изображения. Такой режим подходит для подготовки файлов к публикации, отправке клиенту, загрузке в CMS или размещению в открытых каталогах. Он не делает фотографию анонимной в юридическом смысле, но убирает типичные служебные блоки, оставленные камерой и редакторами.
Сравнение параметров очистки:
| Команда | Что делает | Когда применять |
|---|---|---|
jhead -de *.jpg |
Удаляет EXIF-заголовок | Нужно убрать данные камеры, дату, GPS внутри EXIF |
jhead -dx *.jpg |
Удаляет XMP-секцию | Нужно убрать XMP от редакторов и каталогизаторов |
jhead -di *.jpg |
Удаляет IPTC-секцию | Нужно убрать IPTC-подписи и редакционные поля |
jhead -dc *.jpg |
Удаляет JPEG-комментарий | Нужно убрать комментарий JPEG |
jhead -purejpg *.jpg |
Удаляет лишние секции JPEG | Нужно получить максимально чистый JPEG без служебных блоков |
Для аккуратной обработки лучше не запускать сразу -purejpg на единственной копии архива. Правильный сценарий:
mkdir cleancp *.jpg clean/cd cleanjhead -purejpg *.jpg
После этого можно сравнить размер файлов, открыть несколько изображений и проверить, что картинка отображается нормально. Если нужны исходные EXIF-данные для архива, они должны оставаться в оригинальной папке.
Для сайта или интернет-магазина такой подход практичен: рабочая папка хранит исходники с метаданными, а папка clean содержит версии для публикации. Это разделяет архив и публичные файлы, не заставляя вручную очищать каждую фотографию.
Миниатюры EXIF: извлечение, удаление и обновление
Встроенная EXIF-миниатюра — это маленькое JPEG-превью внутри основного JPEG-файла. Камеры добавляют его для быстрого просмотра на экране камеры и в некоторых программах. У этой миниатюры есть две проблемы: она занимает место и может не соответствовать отредактированному изображению. Например, фотографию повернули, кадрировали или изменили, а старая миниатюра внутри EXIF осталась прежней.
JHead умеет извлекать такую миниатюру:
jhead -st thumb.jpg photo.jpg
Для пакетной обработки используется подстановка &i:
jhead -st "thumbnails/&i" *.jpg
В этом варианте JHead сохраняет миниатюры в папку thumbnails с именами, связанными с исходными файлами. Кавычки обязательны в большинстве оболочек, потому что & может интерпретироваться как специальный символ.
Если миниатюры не нужны, их можно удалить:
jhead -dt *.jpg
Удаление встроенной миниатюры уменьшает размер JPEG без изменения основного изображения. Это особенно актуально для старых камер, которые добавляли заметные по размеру превью в EXIF. В современных файлах выигрыш может быть небольшим, но при тысячах фотографий экономия все равно становится заметной.
Для замены миниатюры используется:
jhead -rt newthumb.jpg photo.jpg
Этот вариант работает, если в EXIF уже есть миниатюра, которую можно заменить. Если нужно сгенерировать новую миниатюру из самого изображения, используется -rgt:
jhead -rgt photo.jpg
Можно указать размер:
jhead -rgt160 photo.jpg
-rgt зависит от внешних средств генерации миниатюры. В типовом сценарии используется ImageMagick, а именно mogrify. Поэтому, если команда не работает, нужно проверить наличие ImageMagick в системе.
Практический сценарий выглядит так:
cp -r edited edited_backupcd editedjhead -rgt160 *.jpg
После этого миниатюры в EXIF будут синхронизированы с текущим видом изображений, если исходные условия для -rgt выполнены. Это полезно после пакетного поворота фотографий или обработки в редакторе, который сохранил EXIF, но не обновил встроенное превью.
Автоматический поворот JPEG по тегу Orientation
Многие камеры и смартфоны не всегда физически поворачивают пиксели изображения. Вместо этого они записывают в EXIF тег Orientation: просмотрщик должен прочитать его и показать фотографию вертикально или горизонтально. Проблема появляется, когда разные программы по-разному относятся к этому тегу. Один просмотрщик показывает снимок правильно, другой — боком, сайт разворачивает его иначе, а после ручного поворота изображение может начать поворачиваться дважды.
JHead решает это параметром:
jhead -autorot *.jpg
При такой обработке программа читает Orientation из EXIF, запускает jpegtran для поворота изображения и затем устанавливает Orientation в значение 1, то есть нормальная ориентация. EXIF-миниатюра также поворачивается, а высота и ширина JPEG корректируются в самом изображении.
Команда особенно полезна для старых архивов, где вертикальные фотографии открываются по-разному в разных программах. После -autorot файл становится более предсказуемым: изображение физически приведено к нормальной ориентации, а EXIF-тег больше не заставляет просмотрщики дополнительно его вращать.
Перед использованием нужно учитывать зависимость от jpegtran. На Linux он часто уже установлен вместе с JPEG-библиотеками. На Windows его может потребоваться установить отдельно. Если jpegtran отсутствует, -autorot не сможет выполнить поворот.
Есть и обратный параметр:
jhead -norot *.jpg
Он очищает тег ориентации без изменения изображения. Это нужно, когда картинка уже повернута правильно, но в EXIF остался старый Orientation. Например, файл был обработан сторонним инструментом, пиксели уже развернуты вертикально, но браузер или CMS снова поворачивает снимок, потому что видит EXIF-тег. В таком случае -norot убирает причину двойного поворота.
Практический порядок:
mkdir fixedcp *.jpg fixed/cd fixedjhead -autorot *.jpg
Если после проверки видно, что часть файлов повернулась неправильно из-за уже исправленных пикселей и старого тега, для таких файлов можно использовать:
jhead -norot photo.jpg
Важное отличие: -autorot меняет изображение через jpegtran, а -norot меняет только тег. Эти параметры нельзя считать взаимозаменяемыми.
Перенос EXIF из оригинала в отредактированный JPEG
Частая ситуация: исходные фотографии содержали правильные EXIF-данные, но после обработки в редакторе они исчезли. Это бывает после сохранения через старые редакторы, онлайн-компрессоры, пакетные конвертеры или инструменты, которые оставляют только изображение без служебных блоков. В результате готовый JPEG выглядит правильно, но внутри нет даты съемки, модели камеры, фокусного расстояния и других данных.
JHead умеет переносить EXIF-заголовок из одного JPEG в другой через параметр -te:
jhead -te original.jpg edited.jpg
Здесь original.jpg — файл-источник с нужным EXIF, а edited.jpg — файл, в который нужно перенести заголовок.
Для пакетной обработки применяется относительное имя через &i. Например, исходники лежат в папке originals, а обработанные файлы — в текущей папке и называются так же:
jhead -te "originals/&i" *.jpg
JHead для каждого файла подставит его исходное имя вместо &i и возьмет EXIF из соответствующего файла в папке originals. Кавычки нужны, чтобы оболочка не обработала & как специальный символ. Такой сценарий хорошо подходит после пакетной обработки в фоторедакторе, если имена файлов сохранились.
Пример рабочего процесса:
project/ originals/ IMG_0001.jpg IMG_0002.jpg edited/ IMG_0001.jpg IMG_0002.jpg
Команда:
cd project/editedjhead -te "../originals/&i" *.jpg
После нее отредактированные JPEG получают EXIF из исходников. Это позволяет сохранить дату съемки, модель камеры и другие сведения без повторной ручной записи.
Перенос EXIF нужно использовать осмысленно. Если изображение было сильно изменено — кадрировано, уменьшено, повернуто, пересохранено в другом размере, — часть EXIF-полей может уже не соответствовать текущему файлу. Например, сведения о разрешении, миниатюре или ориентации могут требовать дополнительной проверки. В таких случаях после переноса полезно выполнить:
jhead edited.jpg
и посмотреть, совпадают ли основные поля с ожидаемым состоянием.
Работа с JPEG-комментариями
JHead умеет работать с JPEG comment field. Это отдельный комментарий в JPEG-заголовке, не равный EXIF UserComment. Такое различие важно: если пользователь хочет удалить или изменить именно JPEG-комментарий, используются параметры -dc, -cl, -ce, -cs, -ci.
Удаление комментария:
jhead -dc photo.jpg
Запись комментария прямо из командной строки:
jhead -cl "Photo prepared for web catalog" photo.jpg
Такой комментарий можно использовать для внутренних пометок, но для публичных изображений его обычно удаляют. Если файл передается клиенту или публикуется на сайте, служебные комментарии могут быть лишними.
Для редактирования комментария в текстовом редакторе применяется:
jhead -ce photo.jpg
JHead открывает редактор, определенный переменной окружения EDITOR. Если редактор не задан, на Windows используется notepad, а на Unix-подобных системах — vi. Это поведение удобно для пользователей, которые хотят быстро поправить комментарий без отдельной программы для метаданных.
Для сохранения комментария в файл:
jhead -cs comment.txt photo.jpg
Для вставки комментария из файла:
jhead -ci comment.txt photo.jpg
Так можно переносить один и тот же JPEG-комментарий между несколькими файлами или хранить комментарии отдельно. Но для массовой каталогизации фотографий лучше использовать более структурированные поля IPTC/XMP в специализированных инструментах. JHead в этой части остается простой: он быстро читает, записывает и удаляет JPEG-комментарии, не превращая их в сложную базу данных.
Автоматизация через -cmd
Параметр -cmd позволяет запускать внешнюю команду для каждого обработанного JPEG. Это делает JHead удобной частью цепочки автоматизации. Программа может отбирать файлы по EXIF, подставлять имя текущего изображения и выполнять внешнее действие: конвертацию, копирование, перемещение, запуск дополнительной утилиты, генерацию превью.
Типовая идея такая: JHead проходит по JPEG, читает метаданные, а затем выполняет указанную команду. В командах используется подстановка &i для имени входного файла и &o для имени выходного файла в некоторых сценариях. Как и в других параметрах, строку с &i лучше заключать в кавычки:
jhead -cmd "mogrify -resize 1600x1600 &i" *.jpg
Такой запуск вызывает ImageMagick для каждого изображения. Но этот пример нужно применять осторожно: mogrify обычно меняет файлы на месте. Без резервной копии можно потерять исходное разрешение.
Более безопасный вариант — сначала скопировать файлы:
mkdir webcp *.jpg web/cd webjhead -cmd "mogrify -resize 1600x1600 &i" *.jpgjhead -purejpg *.jpg
Здесь JHead используется в двух ролях: сначала как инструмент запуска пакетной команды, потом как очиститель JPEG-метаданных.
Через -cmd удобно сочетать JHead с фильтром -model. Например, если нужно обработать только снимки с конкретной камеры:
jhead -model "Canon" -cmd "mogrify -resize 2000x2000 &i" *.jpg
В этом случае JHead выберет файлы, у которых в EXIF-модели камеры есть Canon, и выполнит команду только для них. Такой сценарий полезен, когда в папке лежат фотографии с нескольких устройств, а обработка нужна только для одной камеры.
Еще один вариант — запуск команды после проверки EXIF-наличия:
jhead -exonly -cmd "cp &i ../with_exif/" *.jpg
-exonly пропускает файлы без EXIF-заголовка. В результате можно отделить JPEG, пришедшие напрямую с камеры, от файлов, которые уже прошли через редакторы и потеряли EXIF.
Автоматизация через -cmd требует дисциплины. Если внешняя команда удаляет, перезаписывает, сжимает или перемещает файлы, JHead не превращает ее в безопасную операцию. Он просто запускает то, что указано. Поэтому сначала нужно тестировать на 2–3 копиях, затем на небольшой папке и только потом на основном наборе.
Ограничения JHead
JHead — специализированная программа, и ее ограничения нужно учитывать до начала работы. Первое и самое заметное: у нее нет графического интерфейса. Нельзя перетащить файл в окно, раскрыть дерево тегов, щелкнуть по полю DateTimeOriginal, выбрать дату в календаре и нажать Save. Все делается командами. Для пользователей, которые не привыкли к терминалу, это порог входа.
Второе ограничение — JHead не является универсальным редактором любых метаданных. Он хорошо работает с типовыми задачами JPEG/EXIF: просмотр, очистка, дата/время, переименование, миниатюры, комментарии, автоповорот, перенос EXIF. Но он не предназначен для ручного редактирования произвольного EXIF-тега, массового управления XMP-словарями, сложной работы с MakerNotes или поддержки огромного числа форматов. Создание EXIF через -mkexif очень ограничено: добавляются дата и время и пустые поля миниатюры, а не полноценный EXIF-профиль камеры.
Третье ограничение связано с правкой EXIF. JHead в основном меняет уже существующие фиксированные поля. Если нужно создать или изменить сложные структуры, лучше использовать ExifTool или Exiv2. Для простого сдвига времени, удаления EXIF и переименования по дате JHead удобнее, но для сложного редактирования метаданных он не подходит.
Четвертое ограничение — зависимость отдельных функций от внешних программ. -autorot использует jpegtran, а -rgt связан с генерацией миниатюр через внешние инструменты вроде ImageMagick. Если этих программ нет в системе, соответствующие сценарии не будут работать как ожидается.
Пятое ограничение — осторожность при массовых изменениях. Команды удаления и переименования выполняются сразу. jhead -purejpg *.jpg очистит все подходящие файлы в папке. jhead -n%Y%m%d-%H%M%S *.jpg переименует их. jhead -ta+3:00 *.jpg изменит EXIF-время. Это не недостаток, а особенность командной утилиты: она делает ровно то, что ей сказали, без пошагового мастера и финального окна подтверждения.
Шестое ограничение — часть данных может быть некорректной не из-за JHead, а из-за самого файла. Если камера неправильно записала размер сенсора, если файл был уменьшен редактором без корректного обновления EXIF, если миниатюра устарела, если Orientation уже не соответствует пикселям, программа честно работает с тем, что есть в заголовке. Она не всегда может автоматически понять историю обработки файла.
Правильная роль JHead — не все исправить за пользователя, а быстро выполнить конкретную операцию над JPEG. В этой роли программа сильна. Но если нужна визуальная проверка каждого поля, сложные XMP-схемы, RAW-файлы, видео, PDF или продвинутая приватность по разным форматам, нужно выбирать другой инструмент.
Сравнение с аналогами
JHead находится в одной области с несколькими реальными программами для работы с метаданными, но занимает более узкую нишу. Его стоит сравнивать не абстрактно с редакторами EXIF, а с конкретными инструментами: ExifTool, Exiv2, ExifCleaner и exiftran.
| Программа | Формат работы | Основная специализация | Где JHead удобнее | Где аналог сильнее |
|---|---|---|---|---|
| JHead | Командная строка | Быстрая работа с EXIF/JPEG: просмотр, дата, переименование, очистка, миниатюры, автоповорот | Простые массовые JPEG-задачи одной командой | Не подходит для сложного редактирования произвольных метаданных |
| ExifTool | Командная строка | Чтение, запись и создание метаданных во множестве форматов | JHead проще для типовых операций с JPEG | ExifTool намного шире по форматам и тегам |
| Exiv2 | Командная строка и C++ библиотека | Exif, IPTC, XMP, ICC в разных форматах изображений | JHead проще для быстрого просмотра и правки даты | Exiv2 сильнее как библиотека и инструмент для сложной работы с метаданными |
| ExifCleaner | Графический интерфейс | Удаление метаданных из фото, видео, PDF и других файлов | JHead удобнее в скриптах и точечной CLI-обработке | ExifCleaner проще для пользователя без терминала |
| exiftran | Командная строка | Потеряless-поворот JPEG с учетом EXIF Orientation | JHead шире: дата, переименование, очистка, комментарии, миниатюры | exiftran точнее специализирован на трансформациях JPEG |
ExifTool — самый мощный инструмент из этой группы. Он поддерживает множество форматов метаданных, включая EXIF, GPS, IPTC, XMP, JFIF, ICC Profile, Photoshop IRB и MakerNotes многих производителей камер. Если нужно редактировать почти любые теги, переносить метаданные между разными типами файлов, работать с RAW, видео или сложными профилями, ExifTool обычно лучше. Но для простого сценария вроде показать EXIF, сдвинуть дату на час, переименовать JPEG по дате или удалить EXIF из папки JHead проще и быстрее воспринимается.
Exiv2 — кроссплатформенная C++ библиотека и командная утилита для чтения, записи, удаления и изменения Exif, IPTC, XMP и ICC-метаданных. Она особенно интересна разработчикам и программам, которым нужна интеграция работы с метаданными на уровне библиотеки. Для обычного пользователя, которому нужно быстро исправить дату в JPEG, JHead проще: меньше синтаксиса, меньше концепций, меньше лишних возможностей.
ExifCleaner — программа с графическим интерфейсом для удаления метаданных. Она поддерживает drag-and-drop: пользователь перетаскивает файлы или папки в окно, и программа очищает их. ExifCleaner работает не только с изображениями, но и с видео, PDF и другими типами файлов, использует ExifTool и предлагает функции вроде сохранения копии и пакетной обработки. Для человека, который не хочет открывать терминал, ExifCleaner удобнее. Но если нужно встроить очистку JPEG в скрипт, обработать файлы по маске, переименовать по EXIF-дате или сдвинуть время съемки, JHead остается более точным инструментом.
exiftran решает близкую, но более узкую задачу: трансформации JPEG с учетом EXIF Orientation. Он умеет выполнять lossless-повороты, обрабатывать несколько файлов, обновлять EXIF-информацию и миниатюру. Если задача только в корректном повороте JPEG, exiftran силен. Но JHead шире: он не ограничивается ориентацией, а работает с датами, переименованием, удалением секций, комментариями, миниатюрами и переносом EXIF.
Выбор простой. Для сложной универсальной метадаты — ExifTool. Для C++-интеграции и структурированной работы с Exif/IPTC/XMP/ICC — Exiv2. Для визуальной очистки файлов перетаскиванием — ExifCleaner. Для поворота JPEG — exiftran. Для быстрых, понятных и повторяемых операций над EXIF/JPEG — JHead.
Практические сценарии использования
Подготовка JPEG перед публикацией
Перед загрузкой изображений на сайт, форум, маркетплейс или в публичную папку можно удалить лишнюю служебную информацию:
mkdir publishcp *.jpg publish/cd publishjhead -purejpg *.jpg
Такой сценарий отделяет исходники от публичных файлов. Оригиналы остаются с EXIF, а папка publish содержит очищенные JPEG. Если нужно удалить только EXIF, но оставить другие секции, команда будет другой:
jhead -de *.jpg
Если нужно убрать только XMP от редактора:
jhead -dx *.jpg
Исправление времени после поездки
Камера была настроена на старый часовой пояс и все фотографии отстают на 3 часа:
jhead -ta+3:00 *.jpgjhead -ft *.jpg
Первая команда исправляет EXIF-время, вторая выставляет системную дату файлов по EXIF. После этого сортировка в файловом менеджере, каталоге и облаке становится логичной.
Исправление сброшенной даты камеры
Камера после разрядки аккумулятора начала записывать дату 2002:01:01, хотя съемка была 29 мая 2024 года:
jhead -da2024:05:29/11:21-2002:01:01 *.jpg
Такой способ лучше ручного сдвига на огромное количество часов, потому что JHead рассчитывает календарную разницу между датами.
Сортировка фотографий из нескольких камер
Сначала исправляется время на каждой камере, затем файлы переименовываются:
jhead -ta+0:07 camera1/*.jpgjhead -ta-0:03 camera2/*.jpgjhead -n%Y%m%d-%H%M%S-%03i camera1/*.jpgjhead -n%Y%m%d-%H%M%S-%03i camera2/*.jpg
После этого снимки можно объединить в одну папку и отсортировать по имени. Они будут идти в порядке съемки.
Восстановление EXIF после редактирования
Исходники лежат в originals, обработанные файлы — в edited:
cd editedjhead -te "../originals/&i" *.jpg
Команда переносит EXIF из одноименных исходников в обработанные JPEG. Это удобно после редакторов, которые удалили метаданные при экспорте.
Автоповорот старых фотографий
Для папки с вертикальными снимками, которые открываются боком:
mkdir rotatedcp *.jpg rotated/cd rotatedjhead -autorot *.jpg
Если часть файлов уже повернута, но тег Orientation остался, применяется:
jhead -norot *.jpg
Удаление встроенных EXIF-миниатюр
Для уменьшения лишних данных в архивной папке:
jhead -dt *.jpg
Если нужно сначала извлечь миниатюры для проверки:
mkdir thumbnailsjhead -st "thumbnails/&i" *.jpg
Отбор файлов по модели камеры
Для просмотра только снимков с определенной камеры:
jhead -model "EOS 40D" *.jpg
Для обработки только таких файлов через внешнюю команду:
jhead -model "EOS 40D" -cmd "cp &i ../canon_only/" *.jpg
Быстрый аудит папки
Чтобы понять, какие файлы имеют EXIF, какие камеры использовались и какие даты записаны:
jhead -c *.jpg
Если нужно пропускать файлы без EXIF:
jhead -exonly -c *.jpg
Такой режим помогает быстро проверить папку после выгрузки из редактора, мессенджера или CMS.
Плюсы и минусы
У JHead есть несколько сильных сторон, которые объясняют, почему программа остается полезной, несмотря на возраст и отсутствие графического интерфейса.
Главный плюс — простота. Команда jhead photo.jpg сразу показывает EXIF. Команда jhead -de *.jpg удаляет EXIF. Команда jhead -ft *.jpg синхронизирует дату файла с EXIF. Команда jhead -n%Y%m%d-%H%M%S *.jpg переименовывает фотографии по времени съемки. В этой прямоте и есть ценность программы.
Второй плюс — пакетная обработка. JHead рассчитана на работу с масками файлов, поэтому хорошо подходит для папок. Не нужно открывать каждую фотографию, выбирать пункт меню, подтверждать действие и сохранять файл. Для больших архивов это принципиально.
Третий плюс — пригодность для автоматизации. JHead легко встроить в скрипт, локальный обработчик фотографий, подготовку файлов для сайта, архивный сценарий или цепочку с ImageMagick и jpegtran. Она выводит текст, принимает параметры, работает с путями и не требует участия пользователя после запуска.
Четвертый плюс — точная специализация. Программа не перегружена функциями фоторедактора. Она не редактирует цвет, не сжимает изображение сама по себе, не предлагает фильтры, не строит каталог. Она занимается EXIF/JPEG-задачами, и это делает ее предсказуемой.
Минусы тоже очевидны. Первый — нет GUI. Пользователь должен понимать командную строку, пути, маски файлов, кавычки и последствия команд. Ошибка в папке или маске может привести к обработке не тех файлов.
Второй минус — ограниченная правка EXIF. JHead хорошо меняет даты, удаляет секции, переносит заголовки и работает с миниатюрами, но не является универсальным редактором всех тегов. Для сложной метадаты нужен ExifTool или Exiv2.
Третий минус — ориентация на JPEG. Хотя в актуальной документации упоминается работа с EXIF-заголовками в WebP и PNG при их наличии, основной практический смысл JHead остается вокруг JPEG-файлов цифровых камер. Для RAW, видео, PDF и большого набора современных форматов это не основной инструмент.
Четвертый минус — зависимость некоторых функций от внешних программ. Автоповорот требует jpegtran, регенерация миниатюр связана с ImageMagick. Если пользователь ожидает, что JHead полностью автономно сделает все операции с изображением, это может стать неожиданностью.
Пятый минус — необходимость резервных копий. Программа не ведет пользователя через мастер и не показывает предпросмотр. Массовое удаление EXIF, изменение даты и переименование нужно выполнять осознанно.
Итог
JHead EXIF JPEG Manipulation Tool — это практичная консольная программа для тех, кому нужно быстро и массово работать с EXIF-данными JPEG. Она хорошо показывает параметры съемки, исправляет дату и время, синхронизирует системные даты файлов, переименовывает фотографии по DateTimeOriginal, удаляет EXIF, XMP, IPTC и JPEG-комментарии, работает со встроенными миниатюрами, переносит EXIF из исходников и помогает исправлять ориентацию снимков через jpegtran.
Ее не нужно воспринимать как фоторедактор или универсальную платформу метаданных. Это инструмент для конкретных операций. Если задача звучит как посмотреть EXIF JPEG, удалить EXIF из JPEG, изменить дату EXIF, повернуть JPEG по EXIF Orientation, переименовать фотографии по дате съемки, перенести EXIF из оригинала или подготовить папку фотографий к публикации, JHead подходит хорошо.
Если нужна визуальная очистка перетаскиванием файлов, удобнее ExifCleaner. Если требуется редактировать любые теги во множестве форматов, лучше ExifTool. Если нужна библиотека для интеграции в приложение, логичнее Exiv2. Если задача только в повороте JPEG, можно рассмотреть exiftran. Но для быстрых командных операций с JPEG-архивом JHead остается компактным и точным решением.