Как автоматически поворачивать изображения с данными ориентации exif с помощью php

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

Я пробовал искать в Интернете, как проверить данные и повернуть их обратно, если они есть, но я не могу понять, что я должен делать.

Вот мой код:

if(isset($_POST['submit'])) {
        $allowedExts = array("jpg", "jpeg", "gif", "png", "JPG", "GIF");
        $extension = end(explode(".", strtolower($_FILES["file"]["name"])));
        if ((($_FILES["file"]["type"] == "image/gif")
        || ($_FILES["file"]["type"] == "image/jpeg")
        || ($_FILES["file"]["type"] == "image/png")
        || ($_FILES["file"]["type"] == "image/pjpeg"))
        && in_array($extension, $allowedExts)) {
            if ($_FILES["file"]["error"] > 0) {
                echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
            } else {

                $random_numer = rand(10000000, 99999999);
                $newname1 = $random_numer . $_FILES["file"]["name"];
                $scramble = md5($newname1);
                $extension = end(explode(".", $_FILES["file"]["name"]));
                $final_name = $scramble . "." . $extension;

                move_uploaded_file($_FILES["file"]["tmp_name"], "../img/gallery/" . $final_name);
                create_thumbnail($final_name);
                $stmt = $conn->prepare('INSERT INTO gallery (image) VALUES (:image)');
                $stmt->bindParam(':image', $final_name);
                $stmt->execute();

                if ($stmt->rowCount() > 0) {
                    echo "<p class='success'>The Image has been added!
                     <a href='gallery.php'>Please click here to refresh</a></p>";
                } else {
                    echo "<p class='error'>The Image was not added, there was an error.</p>";
                }

            }
        } else {
            echo "Invalid file";
        }
    }

Как сделать, чтобы изображения не вращались?


person Ben    schedule 21.03.2013    source источник


Ответы (1)


Вам придется написать еще одну пользовательскую функцию, так как нет способа заставить move_uploaded_file игнорировать данные EXIF, что является своего рода обломом.

person ingernet    schedule 21.03.2013
comment
Вы жизнь безопаснее. Мне потребовалось некоторое время, чтобы прийти в себя, но я, наконец, сделал это. Еще раз спасибо - person Ben; 22.03.2013