Задание:
Используя функцию сжатия изображений из урока 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]