
Фон
Я делал резервные копии своих цифровых фотографий и заметил, что некоторые фотографии были импортированы с моей камеры дважды в две разные папки. Проблема не в этом.
Проблема в том, что я сравнивал размеры файлов и заметил, что некоторые дубликаты были меньше (4,6 МБ против 5 МБ). Я заметил, что у меньших есть Microsoft Photo Viewer
поле Program Name данных Exif, тогда как у больших в этом поле указана модель моей камеры. Кроме того, размеры высоты и ширины были поменяны местами (изображение было повернуто).
Вопрос
Почему мои фотографии подвергаются манипуляциям?
Означает ли разница в размере файла, что я теряю качество изображения в процессе обработки?
- или возможно, что Windows использует более эффективный алгоритм сжатия JPEG, чем моя камера? (Предполагая, что они обе используют минимальный уровень сжатия JPEG)
- или есть что-то в ориентации фотографии, что заставляет JPEG сжиматься по-другому?
решение1
Windows добавляет два тега, когда поворачивает фото: Software (Exif) и CreatorTool (Exif). Хотя в проводнике Windows они отображаются как один.
Почему это манипулируется? Вероятно, Windows поворачивает фотографию в соответствии с тегом поворота с камеры.
Фото можно повернуть без потерь двумя способами (может больше?). Один из них — тег поворота Exif. Это просто данные для браузера изображений, которые он должен отображать повернутым. Второй способ манипулирует данными изображения («реальный» поворот), но без потери данных*. Если вы видите обе фотографии повернутыми, это означает, что у одной из них есть тег поворота Exif, а вторая действительно повернута Windows. Если ваш браузер изображений поддерживает тег поворота Exif, вы увидите обе фотографии одинаково.
Почему изменился размер? Трудно сказать без файла. Я бы сказал, что это миниатюра. Некоторые камеры добавляют очень большую миниатюру к файлам JPEG, и Windows либо удаляет ее, либо изменяет на свою собственную. В этом случае фотография не будет затронута, но метаданные — именно «фото в фото». Вы можете посмотреть информацию exiftool ( exiftool filename.jpg
) и сравнить, изменились ли метаданные. Особенно обратите внимание на информацию о двоичных данных. Или вы можете отправить сюда два файла — повернутый и исходный — и я проверю это.
Сжатие JPEG - сомневаюсь, что Windows повторно сжимает ваши JPEG. В этом случае, вероятно, он выполняет только операции без потерь, поэтому изменяются только метаданные.
Я рекомендую делать фотографии самостоятельно, без использования каких-либо инструментов - ни Windows, ни средств от производителя камеры.
Кстати, если хотите, можете удалить эти теги (команда работает рекурсивно для всех файлов с расширением .jpg, начиная с текущего каталога):
exiftool -preserve -EXIF:Software= -if "$EXIF:Software =~ /(^Microsoft Windows Photo Viewer)/" -r -ext jpg .
exiftool -preserve -XMP:CreatorTool= -if "$XMP:CreatorTool =~ /(^Microsoft Windows Photo Viewer)/" -r -ext jpg .
И если все будет хорошо, удалите резервные копии с помощью
exiftool -delete_originals -r -ext jpg .
*
Представьте себе квадратные плитки с изображениями 8x8 пикселей на каждой из них - затем поверните каждую из них - это то, что делает Windows. Проблема в том, что плитки не 8x8, т.е. вы не можете разделить высоту или ширину на 8. Тогда Windows повторно сжимает файл.
решение2
Я, возможно, нашел еще одну ошибку в старой версии Microsoft Photo Viewer. Я обнаружил строку изображений, которые были помечены в данных EXIF как "Microsoft Photo Gallery 6.0.6001.18000".
XResolution и YResolution были неправильно указаны, либо как 1/96 вместо 96/1, как должно быть, либо иногда как 0/1, иногда как «бесконечность», что я не уверен, что это пыталось представить. Я должен добавить, что это разрешение THUMBNAIL, так что это может означать, что MS Photo Viewer создавал миниатюру.
Это вызвало проблемы на archive.org, когда я попытался создать книгу.
Поскольку эта версия Microsoft Photo Gallery давно устарела, я полагаю, что ошибка была устранена.
Мне пришлось использовать программное обеспечение «EXIF Pilot», чтобы исправить эти некорректные поля; было бы неплохо иметь доступ к массовым полям EXIF, но пакетный инструмент — это платный плагин к EXIF Pilot, а у меня нет платной версии Total Commander.
Это были не мои файлы, поэтому я делаю предположения о том, как были повреждены данные EXIF, но подозреваю, что это произошло из-за Microsoft Photo Viewer.