Определить, было ли изображение повернуто вручную, неправильный флаг ориентации EXIF

У меня возникли странные проблемы с поворотом изображения.

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

Вот как выглядит упрощенная функция:

function image_fix_orientation($filename) {

$exif = exif_read_data($filename);

if (!empty($exif['Orientation'])) {

$image = imagecreatefromjpeg($filename);

switch ($exif['Orientation']) {
case 3:
$image = imagerotate($image, 180, 0);
break;

case 6:
$image = imagerotate($image, -90, 0);
break;

case 8:
$image = imagerotate($image, 90, 0);
break;
}

imagejpeg($image, $filename, 100);

}

}

Это, кажется, работает хорошо для изображений, которые имеют установленный флаг ориентации, были повернуты и вызывают исходную проблему.

Однако, как ни странно, я обнаружил несколько изображений, ранее загруженных на наш сервер (мы сохраняем исходное изображение с данными EXIF ​​без изменений), до того, как мы реализовали приведенный выше код, который, кажется, содержит флаг ориентации (скажем, «3»), но их Необработанная картина — верный путь. Если я добавляю одно из этих изображений в мой новый код загрузки, он читает флаг ориентации и поворачивает изображение, но с самого начала изображение было правильным.

Я полагаю, что пользователь, вероятно, вручную повернул изображение перед загрузкой, но при этом он все еще сохраняет значение флага ориентации. Например, если я поворачиваю изображение в программе Paint, оно, похоже, сохраняет то же значение ориентации. Вот пример изображения http://s16.postimg.org/cv5ejchqt/exig.jpg (стрелка указывает на истинную верхнюю часть изображения), но она имеет значение флага ориентации 3, поэтому поворачивается при использовании моего нового кода загрузки.

Есть ли способ определить, вращался ли пользователь вручную, как-нибудь?

Спасибо

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector