Как обрезать изображение перед загрузкой с помощью php? - PullRequest
0 голосов
/ 11 февраля 2020

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

  if(isset($_POST["submit"])) {
      if(is_array($_FILES)) {


    $uploadedFile = $_FILES['file']['tmp_name']; 
    $sourceProperties = getimagesize($uploadedFile);
    $newFileName = time();
    $dirPath = "uploads/";
    $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
    $imageType = $sourceProperties[2];


    switch ($imageType) {


        case IMAGETYPE_PNG:
            $imageSrc = imagecreatefrompng($uploadedFile); 
            $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
            imagepng($tmp,$dirPath. $newFileName. "_thump.". $ext);
            break;           

        case IMAGETYPE_JPEG:
            $imageSrc = imagecreatefromjpeg($uploadedFile); 
            $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
            imagejpeg($tmp,$dirPath. $newFileName. "_thump.". $ext);
            break;

        case IMAGETYPE_GIF:
            $imageSrc = imagecreatefromgif($uploadedFile); 
            $tmp = imageResize($imageSrc,$sourceProperties[0],$sourceProperties[1]);
            imagegif($tmp,$dirPath. $newFileName. "_thump.". $ext);
            break;

        default:
            echo "Invalid Image type.";
            exit;
            break;
    }


    move_uploaded_file($uploadedFile, $dirPath. $newFileName. ".". $ext);
    echo "Image Resize Successfully.";
    }
  }


   function imageResize($imageSrc,$imageWidth,$imageHeight) {

    $newImageWidth =900;
    $newImageHeight =534;

     $newImageLayer=imagecreatetruecolor($newImageWidth,$newImageHeight);



   imagecopyresampled($newImageLayer,$imageSrc,0,0,0,0,$newImageWidth,$newImageHeight,$imageWidth,$imageHeight);

    return $newImageLayer;
}
?> 

1 Ответ

0 голосов
/ 11 февраля 2020

Если вы удалите строку move_uploaded_file из своего кода, она не сохранит исходный файл (который останется во временной папке и в конечном итоге будет удален системой). Остальная часть вашего кода должна работать как есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...