Задание к уроку 9 php. Сжатие изображений

Автор: | 15.09.2015

Задание:

Используя функцию сжатия изображений из урока 9  и форму загрузки изображений из задания к уроку 5(исключить отправку уведомления на почту), выполнить сжатие загружаемого изображения и в ответе об успехе вывести все 3 размера изображения

  1. s_my_first_uploaded_image.jpg
  2. l_my_first_uploaded_image.jpg
  3. my_first_uploaded_image.jpg

[spoiler title=»Решение»]

index.php

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Загрузка файла</title>
</head>
<body>
 <form action="upload.php" method="post" enctype="multipart/form-data">
 <input type="file" name="fileToUpload" id="fileToUpload">
 <input type="submit" value="Загрузить изображение" name="submit">
 </form>
</body>
</html>

upload.php

<?
  $type = explode('/', $_FILES['fileToUpload']['type'])[1];
  if($type == "jpeg" or $type == "png" or $type == "bmp" or $type == "gif") {
    $filename = 'my_first_uploaded_image.' . $type;
    $uploaddir = 'uploads/';
    $uploadfile = $uploaddir . $filename;
    $uploadfile_s = $uploaddir .'s_'. $filename;
    $uploadfile_l = $uploaddir .'l_'. $filename;
    if(!file_exists($uploaddir)) {
      mkdir($uploaddir);
    }
    if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
      if(compress($uploaddir, $filename)) {
        echo "Файл корректен был сжат и успешно загружен. <a href='index.php'>Вернуться.</a><br>";
        echo "<img src='$uploadfile'>";
      } else {
        echo "Файл корректен и был успешно загружен. <a href='index.php'>Вернуться.</a><br>";
        echo "<img src='$uploadfile_s'><br>";
        echo "<img src='$uploadfile_l'><br>";
        echo "<img src='$uploadfile'><br>";
      }
    } else {
        echo "Во время загрузки произошла ошибка! <a href='index.php'>Попробуйте снова.</a>";
    }
  } else {
    echo "Неверный тип изображения, проверьте загружаемый файл и <a href='index.php'>попробуйте снова.</a>
    <br>Типы файлов которые могут быть загружены:<br> JPEG, JPG, PNG, BMP, GIF";
  }

  function compress($path,$file) {
  $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
  //error_reporting(0);
  ini_set('memory_limit', '512M');
  if($ext=='jpg' || $ext=='jpeg'|| $ext=='png') {
    $sfile=$path."s_".$file;
    $lfile=$path."l_".$file;
    $fullfile=$path.$file;
    if(!($im = imagecreatefromjpeg($fullfile)))
    $im = imagecreatefrompng($fullfile);
    if($im) {
      $iw = imagesx($im); $ih = imagesy($im);
      $k = 650 / $iw;
      if($k>1)$k=1;
      $sx = floor($iw * $k); $sy = floor($ih * $k);
      $im_m = imagecreatetruecolor($sx, $sy);
      imagealphablending( $im_m, false );
      imagesavealpha( $im_m, true );
      $transparent = imagecolorallocatealpha($im_m, 255, 255, 255,255);
      imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);
      imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
      $r_l = imagejpeg($im_m,$lfile);
      $iw = imagesx($im); $ih = imagesy($im);
      $k = 100 / $iw;
      if($k>1)$k=1;
      $sx = floor($iw * $k); $sy = floor($ih * $k);
      $im_m = imagecreatetruecolor($sx, $sy);
      imagealphablending( $im_m, false );
      imagesavealpha( $im_m, true );
      $transparent = imagecolorallocatealpha($im_m, 255, 255, 255, 127);
      imagefilledrectangle($im_m, 0, 0, $sx, $sy, $transparent);
      imagecopyresampled($im_m, $im, 0, 0, 0, 0, $sx, $sy, $iw, $ih);
      $r_s = imagejpeg($im_m,$sfile);
    }	else {
      copy($fullfile, $lfile);
      copy($fullfile, $sfile);
    }
  }
  error_reporting(1);
}
?>

[/spoiler]