Как преобразовать файли JPEG JFIF в формат JPEG Exif?
Я недавно вставил SD-карту своей камеры в ПК с Windows 7 и начал просматривать фотографии на ней. Я заметил, что некоторые не были правильно выровнены и используют rotate feature
включен в Windows Photo Viewer для того, чтобы просматривать их, как я хотел.
Чего я не знал, так это того, что когда используется функция поворота, она также перезаписывает изображение при нажатии следующей или предыдущей кнопки, что приводит к возможной потере качества (что, на мой взгляд, плохая идея, приложение должно по крайней мере предупреждать пользователя о том, что произойдет при использовании такой функции).
После этого я снова вставил SD-карту обратно в камеру, и произошел неприятный сюрприз: повернутый снимок больше нельзя было просматривать. Вместо этого я получил черный экран с надписью "Несовместимый формат JPEG". Другие файлы (нетронутые) все еще работают нормально.
Чтобы попытаться понять, что произошло, я открыл файл JPEG с камеры и файл, созданный в Windows 7 в шестнадцатеричном редакторе. Вот разница:
Файлы JPEG камеры имеют Exif
пометить в них (с 0xE1
в шапке). Другие файлы JPEG (Windows 7) имеют JFIF
тег в нем, а затем Exif
тег (с 0xE0
в шапке).
Так что, если я хорошо понимаю, оба являются файлами JPEG, но используют другой внутренний формат.
Вот мой вопрос: можно ли (используя какой-то инструмент) конвертировать JFIF
файлы в Exif
формат?
Я понимаю, что исходные файлы камеры были перекодированы и, таким образом, теряют качество (возврат оригиналов невозможен). Что я хочу знать, если конвертировать их из JFIF обратно в Exif (без второй потери качества, если это возможно...)
2 ответа
Стандарт JPEG имеет ряд вариантов совместимости файлов, которые были созданы по определенным причинам, часто используются два типа: EXIF и JFIF.
Хотя оба файла классифицируются как файлы JPEG и появляются на компьютере с расширением JPEG, разница связана с дополнительными данными, которые добавляются к исходному изображению во время обработки в камере или в компьютере. Эти данные обычно хранятся в областях, которые называются "APPn" (где "n" - это число 0,1,2 и т. Д.).
Большинство приложений для обработки изображений могут открывать оба типа файлов JPEG, но большинство цифровых камер могут отображать только изображения в формате EXIF. Когда файл EXIF открывается в программе обработки изображений, такой как Photoshop, и затем сохраняется, файл изменяется в формат JFIF, в результате чего изображение больше не может быть открыто камерой, и данные съемки теряются.
EXIF
Формат EXIF был создан для использования в цифровых камерах, в APPn хранится такая информация, как состояние камеры на момент записи изображения (затвор, баланс белого апертуры и т. Д.).
JFIF
Вариант JFIF обычно используется в индустрии обработки изображений, большинство программных приложений сохраняют файлы в этом формате. JFIF использует APPn для хранения информации, такой как авторское право и подписи (текст IPTC), и информации профиля для управления цветом (данные icm).
Вы можете попробовать ExifTool и запустить эту команду, но возможно, что ваша камера не сможет отображать изображения, так как данные съемки будут потеряны.
exiftool "-exif:all<jfif:all" "-thumbnailimage<jfif:thumbnailimage" FILE
Из раздела "Совместимость" статьи Википедии " Формат обмена файлами JPEG":
Более новый формат файла изображения Exchangeable (Exif) сравним с JFIF, но оба стандарта несовместимы друг с другом. Это связано с тем, что оба стандарта указывают, что их конкретный сегмент приложения (APP0 для JFIF, APP1 для Exif) должен быть первым в файле образа. На практике многие программы и цифровые камеры производят файлы с включенными обоими сегментами приложения. Это не повлияет на декодирование изображения для большинства декодеров, но плохо спроектированные парсеры JFIF или Exif могут не распознавать файл должным образом.
Исходя из вышеизложенного, вы можете преобразовать JFIF в Exif, просто удалив сегмент / маркер APP0 с помощью своего шестнадцатеричного редактора и добавив сегмент / маркер APP1 (например, с помощью другого инструмента, который манипулирует данными Exif). Или вы можете просто добавить данные Exif, и вы все равно сможете открыть изображение в большинстве программ.