Задание:
Используя функцию сжатия изображений из урока 9 и форму загрузки изображений из задания к уроку 5(исключить отправку уведомления на почту), выполнить сжатие загружаемого изображения и в ответе об успехе вывести все 3 размера изображения
- s_my_first_uploaded_image.jpg
- l_my_first_uploaded_image.jpg
- 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]