При загрузке вертикальных фото переворачивает в горизонт. Как убрать?

Добрый день,

Есть скрипт php - выбираем фотку, на нее накладывается фон и в таком виде все сохраняется. Проблема в том, что вертикальные фотографии разворачивает в горизонт. Мои познания в php чуть выше нулевых

function create_thumbnails($user_photo_path) {

    $user_photo_path = substr($user_photo_path,27);

    $frames = array(
        "/imageupload_new/frames/imgoing.png",
//        "/imageupload_new/frames/iwas.png"
    );

    $ready_images = array();
    $counter = 1;

    foreach($frames as $choosed_frame_path) {

        // фон
        $template = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT'] . "/imageupload_new/background.jpg");

        // фото
        $info   = getimagesize($_SERVER['DOCUMENT_ROOT'] . $user_photo_path);
        $user_photo_width  = $info[0];
        $user_photo_height = $info[1];
        $type   = $info[2];

        $filename = $_SERVER['DOCUMENT_ROOT'] . $user_photo_path;
        switch ($type) {
            case 1:
                $user_photo = imageCreateFromGif($filename);
                imageSaveAlpha($user_photo, true);
                break;
            case 2:
                $user_photo = imageCreateFromJpeg($filename);
                break;
            case 3:
                $user_photo = imageCreateFromPng($filename);
                imageSaveAlpha($user_photo, true);
                break;
        }

        if($user_photo_height > 400 && $user_photo_width > 400) {
            // Размеры новой фотки.
            $w = 400;
            $h = 400;

            if (empty($w)) {
                $w = ceil($h / ($user_photo_height / $user_photo_width));
            }
            if (empty($h)) {
                $h = ceil($w / ($user_photo_width / $user_photo_height));
            }

            $tmp = imageCreateTrueColor($w, $h);
            if ($type == 1 || $type == 3) {
                imagealphablending($tmp, true);
                imageSaveAlpha($tmp, true);
                $transparent = imagecolorallocatealpha($tmp, 0, 0, 0, 127);
                imagefill($tmp, 0, 0, $transparent);
                imagecolortransparent($tmp, $transparent);
            }

            $tw = ceil($h / ($user_photo_height / $user_photo_width));
            $th = ceil($w / ($user_photo_width / $user_photo_height));

            if ($tw < $w) {
                imageCopyResampled($tmp, $user_photo, ceil(($w - $tw) / 2), 0, 0, 0, $tw, $h, $user_photo_width, $user_photo_height);
            } else {
                imageCopyResampled($tmp, $user_photo, 0, ceil(($h - $th) / 2), 0, 0, $w, $th, $user_photo_width, $user_photo_height);
            }

            $user_photo = $tmp;
        }


        if($user_photo_height < 400) {
            $y_margin = ceil((400-$user_photo_height)/2);
        } else {
            $y_margin = 0;
        }

        if($user_photo_width < 400) {
            $x_margin = ceil((400-$user_photo_width)/2);
        } else {
            $x_margin = 0;
        }

        // склейка фото и фона
        imagecopy($template,$user_photo,$x_margin,$y_margin,0,0,$user_photo_width,$user_photo_height);


Код, естественно, не весь привел.

Как решить эту проблему? Готов материально вознаградить))
  • Вопрос задан
  • 306 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
проблема скорее всего в exif самих файлов, а не в коде, попробуйте удалить exif перед заливкой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы