Откуда Windows File Explorer узнает ориентацию фотографии, если там нет данных EXIF? - PullRequest
1 голос
/ 07 апреля 2019

Я разработал веб-сайт на PHP, который отображает тысячи фотографий, которые я сделал за эти годы. На сегодняшний день у меня не было проблем с ориентацией - все изображения в альбомной и портретной ориентации отображаются правильно.

Я недавно начал редактировать некоторые фотографии, и это изменило их ориентацию. Теперь я изменил свой код для обработки данных EXIF ​​«Ориентация» (используя функцию «correctImageOrientation», созданную Уэсом при переполнении стека - большое спасибо Уэсу!), Чтобы соответствующим образом вращать фотографии, и это хорошо работает.

Однако некоторые из моих отредактированных фотографий теперь не имеют данных ориентации EXIF, поэтому я не могу использовать их для поворота фотографии, но, тем не менее, Проводник файлов каким-то образом знает правильную ориентацию и отображает фотографию правильно. Поэтому мой вопрос: откуда File Explorer получает ориентацию фотографий и как получить к ней доступ из PHP?

1 Ответ

1 голос
/ 07 апреля 2019

Пока не можете комментировать, поэтому опубликуем ответ.

Exif-данные - это просто метаданные, которые используются определенными устройствами. В противном случае его можно удалить. Вы можете изучить этот обходной путь из раздела комментариев в руководстве по PHP :

$orientation = 1;
if (function_exists('exif_read_data')) {
    $exif = exif_read_data($filename);
    if (isset($exif['Orientation'])) $orientation = $exif['Orientation'];
} else if (preg_match('@\x12\x01\x03\x00\x01\x00\x00\x00(.)\x00\x00\x00@', file_get_contents($filename), $matches)) {
    $orientation = ord($matches[1]);
}
...