Изменение размера изображения с помощью GD - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь изменить размер и обрезать изображения с помощью GD, а затем сохранить их в базе данных. У меня есть основы работы GD, однако он возвращает черный прямоугольник правильного размера, но без изображения. Ниже приведена часть формы, которую я использовал, может кто-нибудь заметит ошибку, пожалуйста ?! Обратите внимание: я не могу перейти от GD к Imagick, поскольку мой хостинг-сервер не поддерживает его.

Очень признателен!

foreach ($_FILES["offer_slider_imgs"]["error"] as $key => $error) {
    if ($error == UPLOAD_ERR_OK) {
        $tmp_name = $_FILES["offer_slider_imgs"]["tmp_name"][$key];
        $name     = $_FILES["offer_slider_imgs"]["name"][$key];
        move_uploaded_file($tmp_name, "../uploads/$name");

        $image = imagecreatefromjpeg("/uploads/$name");

        // GD variables:
        list($width, $height, $type) = GetImageSize("/uploads/$name");

        // Image sizes:
        $bigImage = array(1920, 740);
        $source_aspect_ratio = $width / $height;
        $big_aspect_ratio = $bigImage[0] / $bigImage[1];

        if ( $source_aspect_ratio > $big_aspect_ratio ){
            $temp_height = $bigImage[1];
            $temp_width = ( int ) ( $bigImage[1] * $source_aspect_ratio );
        } else {
            $temp_width = $bigImage[0];
            $temp_height = ( int ) ( $bigImage[0] / $source_aspect_ratio );
        }
        //echo "$temp_width, $temp_height";
        $temp_img = imagecreatetruecolor($temp_width, $temp_height);
        imagecopyresampled($temp_img, $image, 
                            0, 0, 0, 0, 
                            $temp_width, $temp_height, $width, $height);

        $bx0 = ($temp_width - $bigImage[0]) / 2;
        $by0 = ($temp_height - $bigImage[1]) / 2;

        $desired = imagecreatetruecolor($bigImage[0], $bigImage[1]);
        imagecopy($desired, $temp_img, 
                0, 0, $bx0, $by0, $bigImage[0], $bigImage[1]);

        $rand = rand();
        // Save image:
        header("Content-type: image/jpeg");
        $saveB = imagejpeg($desired, 'TESTIMAGE.jpg', 90);

        // Destroy images:
        imagedestroy($image);
        imagedestroy($desired);

        $images_name = $rand.'OFFER.jpg' ." | " . $images_name;

    }
}
...