Задать вопрос
@sherzad_90

Почему php скрипт не обрезает картинку???

Данный скрипт предназначен для загрузки фото на сервер.
И скрипт должен обрезать размеры и дать новое имя а потом записать это имя в базу.
Ни где не выводится ошибка. Фото успешно загружается но! не обрезается. Вопрос, почему???
Вот сам код.
<?php
    $path = "./uploads/";
    
    $valid_formats = array("jpg", "png", "jpeg");
    
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){
        
        $name = $_FILES['photoimg']['name'];
        $size = $_FILES['photoimg']['size'];
        $tmp  = $_FILES['photoimg']['tmp_name'];

        if(strlen($name)){ //возвращает длину строки

            list($txt, $ext) = explode(".", $name);
            
            if(in_array($ext,$valid_formats)) {
                if($size<(1024*1024)){ // Макс размер фото 1MB



                    if(preg_match('/[.](PNG)|(png)$/', $_FILES['photoimg']['name'])) {
                        $im = imagecreatefrompng($_FILES['photoimg']['tmp_name']) ;
                        //если оригинал был в формате png, то создаем изображение в этом же формате. 
                        //Необходимо для последующего сжатия
                    }
                    if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $_FILES['photoimg']['name'])) {
                        $im = imagecreatefromjpeg($_FILES['photoimg']['tmp_name']); 
                        //если оригинал был в формате jpg, то создаем изображение в этом же формате. 
                        //Необходимо для последующего сжатия
                    }
                    $Size = getimagesize($_FILES['photoimg']['tmp_name']);
                    $dest = imagecreatetruecolor(200, 220);
                    imagecopyresampled($dest, $im, 0, 0, 0, 0, 200, 220, $Size[0], $Size[1]);



                    
                    $actual_image_name = time().$_SESSION['id'].".".$ext;

                    if(move_uploaded_file($tmp, $path.$actual_image_name)){

                        mysqli_query($CONNECT,"UPDATE `users` SET profile_image='$actual_image_name' WHERE id='$_SESSION[id]'");
                        
                        echo "<img src='./uploads/".$actual_image_name."' class='preview'>";

                    } else echo'<span style="color:red;">Что-то пошло не так!</span>';

                } else echo'<span style="color:red;">Размер файла превышает 1Mb!</span>';

            } else echo'<span style="color:red;">Выбран неправильный формат!</span>'; 

        } else echo'<span style="color:grey;">Пожалуйста выберите фото!</span>';
    exit();
    }
?>
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы сохраняете исходную, необрезанную, версию изображения.
Ответ написан
@errogaht
PHP developer
нужно нормальными библиотеками для этого пользоваться image.intervention.io тогда у вас не будет спагетти кода, в котором чёрт ногу сломит
Ответ написан
Ваш ответ на вопрос

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

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