Спойлер (Отобразить)
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- foreach ($_FILES['foto']['name'] as $k=>$v)
- {
- if($_FILES['foto']['error'][$k] == 0) {
- // назначим наши переменные
- $imgs = $_FILES['foto'];
- $imgs_size = $_FILES['foto']['size'][$k];
- $imgs_type = $_FILES['foto']['type'][$k];
- $imgs_name = $_FILES['foto']['name'][$k];
- $imgs_tmp_name = $_FILES['foto']['tmp_name'][$k];
- // задаем максимальный вес картинки, если превышен, то выводим ошибку
- if ($imgs_size > 2*1024*1000) die ('<center>Размер картинки превысил лимит в 2 МБ. <a href="'.$PHP_SELF.'">Загрузить заново</a></center>');
- // получаем расширения файлов для загрузки
- switch ($img_size['mime']) {
- case "image/gif":
- break;
- case "image/jpeg":
- break;
- case "image/png":
- break;
- default:
- default: die("<center>Ошибка!<br />\n Допускаются файлы: <b>.jpg, .jpeg, .pjpeg</b> до 5МБ<br /> <a href='{$PHP_SELF}'>Загрузить заного</a></center>");
- break;
- }
- // задаем допустимые размеры картинок для загрузки
- $width_max = 250;
- $height_max = 250;
- // получаем размеры
- $width_original = $img_size[0];
- $height_original = $img_size[1];
- // еще одна проверка на размер загружаемых картинок, если превышен, то ошибка
- if ($width_original < $width_max || $height_original < $height_max) die ("<center>Запрещено загружать картинки с размерами меньше {$width_max}x{$height_max}. <a href='{$PHP_SELF}'>Загрузить заного</a></center>");
- // создадим пустое изображение с нужными нам размерами
- // определим пропорции для дальнейшей обрезки до них
- $w_prp = ($width_original / $width_max);
- $h_prp = ($height_original / $height_max);
- // определим высоту и ширину будущих сжатых картинок
- $p_w = ($width_max / $width_original);
- $h_new = ($height_original * $p_w);
- $y1 = (($h_new - $height_max) / 2);
- $p_h = ($height_max / $height_original);
- $w_new = ($width_original * $p_h);
- $x1 = (($w_new - $width_max) / 2);
- // описываем когда приходиться сжимать ширину, а высоту резать
- if ($w_prp < $h_prp) {
- // выполним копирование и ресамдлинг нашей картинки, т.е. с помощью GD библиотеки сгладим и заполним промежуточными цветами недостающие точки
- imagecopyresampled($image_p_1, $image, 0, 0, 0, 0, $width_max, $h_new, $width_original, $height_original);
- imagecopyresampled($image_p, $image_p_1, 0, 0, 0, $y1, $width_max, $height_max, $width_max, $height_max);
- }
- // описываем когда приходиться сжимать высоту, а ширину резать
- elseif ($w_prp > $h_prp) {
- // сного выполним копирование и ресамдлинг нашей картинки, т.е. с помощью GD библиотеки сгладим и заполним промежуточными цветами недостающие точки
- imagecopyresampled($image_p_1, $image, 0, 0, 0, 0, $w_new, $height_max, $width_original, $height_original);
- imagecopyresampled($image_p, $image_p_1, 0, 0, $x1, 0, $width_max, $height_max, $width_max, $height_max);
- }
- // определяем время для названия картинки, удобно если заносим в базу сортировать по времени добавления
- // определяем пути до картинок и их миниатюр и названия для них
- // если все замечательно, создаем файл миниатюры, метод немного отличается для разнообразия от того, что описан выше, если захотите можете потренироваться и сделать создание миниатюр так же как и выше
- // описываем вывод, опять же, если захотите можете выводить запрос в базу данных или куда еще будет угодно
- $vvd = "тут можно отправить запрос в базу";
- if ($vvd) {
- echo "<div align='center'><img src='$imgs_path' alt='image' /><br /><h4>Изображение успешно загружено</h4><br /><h2>Поздравляем!!!</h2><br />\n<a href='{$PHP_SELF}'>Загрузить ещё</a></div>";
- }
- // очередная проверка, если картинка ни куда не добавлена, то ошибка
- }}
- else
- {
- echo "Ошибка при загрузке изображения";
- }
- }