Уважаемые читатели сайта Ajaxs.ru

Очень рад что вы зашли на мой сайт. Надеюсь, Вы сможете найти здесь для себя полезную информацию. Зарегистрировавшись на сайте вы получаете ряд преимуществ:
1. При комментировании Вам не нужно вводить имя и капчу с картинки
2. Вы можете получать уведомления на Email к интерисующим вас урокам
3. Вы можете редактировать свои комментарии

Вход на сайт


Забыли пароль



Восстановление пароля


Войти на сайт

Зарегистрироваться

Главная / Уроки по PHP / Просмотр урока

     

Создание сайтов


Вам нужен небольшой сайт или просто хотите доработать уже существующий? | Подробнее

Создаем мини-изображение из загруженного

Здравствуйте уважаемые пользователи! В этом уроке я хотел показать вам, как загружать изображения на сервер и делать миниатюры загруженных изображений, при этом оставляя их оригиналы. Этот способ можно использовать при создании галереи на сайте. Кстати именно такой способ загрузки изображений я использую на своем сайте http://www.desk-tops.ru. Ну что же приступим.

Пример
Алгоритм работы нашего скрипта будет следующий:

1) Задаем нужные для работы параметры и проводим различные проверки для загружаемого файла

2) Реализуем загрузку изображения;

3) Переименовываем файл для исключения одинаковых названий файлов;

4) Делаем миниатюры изображений.

Для этого мы создадим форму, которая будет содержать поле для загрузки файла:

<form action="upload.php" method="post" enctype="multipart/form-data">
<label><strong>
Выберите изображение для загрузки:</strong></label><br>
<input
name="userfile" type="file" size="60" align="middle">
<br>
<small>
Выберите изображен, которое собираетесь загрузить.</small><br>
<input
name="submit" value="Загрузить изображение" type="submit"><br><br>
</form>
<small>
1. Размер картинки не должен превышать 2 Мб</small><br>
<small>
2. Поддерживаемый формат файлов: jpg</small><br>

Параметр enctype="multipart/form-data" является обязательным, иначе загрузка производиться не будет. Тут все просто, теперь перейдем к обработчику upload.php.
Для начала мы проверим в нем существование переменных userfile и submit.

<?php
if(isset($_POST['userfile']))     {$userfile = $_POST['userfile'];}
if(isset($_POST['submit']))     {$submit = $_POST['submit'];}
?>

Затем сразу приведу весь остальной код, и подробно его разберем:

<?php
if(isset($submit)){
   $maxwidth = 1600; //Максимальная ширина загружаемого изображения
   $maxheight = 1200; //Максимальная высота загружаемого изображения
   $allowed_filetypes = array('.jpg','.JPG'); //Поддерживаемые форматы
   $maxs = 2048; // Максимальный размер файла в байтах
   $upload_path = "images/";
   $filename = $_FILES['userfile']['name']; //Имя файла
   $sizefile = getimagesize($_FILES['userfile']['tmp_name']);//Параметры изображения
   $size = filesize($_FILES['userfile']['tmp_name'])/1024; //Переводим размер изображения в Кбайты
   $size = ceil($size); //округляем размер файла до целого числа
           
   $ext = substr($filename,strpos($filename,'.'),strlen($filename)-1);
   if(!in_array($ext,$allowed_filetypes)){
   echo "<p>Вы <strong>не выбрали изображение</strong> для загрузки или данный <strong>формат файлов не поддерживается</strong></p>";
   }
   else{
       if($size > $maxs or $size == 0){ //Если размер файла больше максимального или равен 0 выдаем ошибку
           echo "<p>Разрешается загружать файлы не более 2 Мб</p>";
       }
       else{
           if($sizefile[0] > $maxwidth or $sizefile[1] > $maxheight) {// Если разрешение не соответствуют выдаем ошибку
              echo "<p>Файл, который ва пытаетесь загрузить, имее разрешение <strong>$sizefile[0] x $sizefile[1]</strong>. Разрешается загружать фото не боле чем <strong>$maxwidth х $maxheight</strong> пикселей</p>";
           }
           else{                 
                if(isset($filename)){// Если имя файла существует производим загрузку
                    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_path.$filename)){
                    echo "<p>Файл <strong>".$filename."</strong> успешно загружен</p>";
                    }
                }
           else {
                echo "<p>Файл <strong>".$filename."</strong>  не загружен</p>";
           }

$new_name = "img_".date("YmdHis").".jpg";
//Переименуем файл на всякий случай что бы не было совпадений                                                 
rename($upload_path.$filename, $upload_path.$new_name);
//Запомним новое имя
$filename = $new_name;

// блок делает мальное изображение исходной фотки - в качестве превьюшки
$smwidth = 120; //Длинна обрезанного изображения
$smheight = 96; //Высота обрезанного изображения

if($sizefile[0] > $smwidth or $sizefile[1] > $smheight){ //Проверяем ширину и высоту исходного файла с заданными для обрезки, если они меньше то ничего не делаем
$smallfoto = $filename; require ('tumbmaker.php');
if (img_resize("images/$filename", "images/crop/$smallfoto", $smwidth, $smheight)){
echo "Масштабирование прошло успешно";
}
else {
   echo "<p>Ошибка обрезки фото</p>";
}
}
else {
   copy($upload_path.$filename, $upload_path."crop/".$filename);
}
         }
      }  
   }
}
else{
echo "<p>Неверный формат запроса</p>";
}
?>

Теперь пойдем по порядку и попытаемся разобрать, что же здесь написано. Если пользователь не нажал кнопку в форме, а просто зашел на страницу, то сразу выдаем ошибку «Неверный формат запроса». Если нажал, то мы задаем максимальные значения длинны($maxwidth), высоты ($maxheight), максимального размера файла ($maxs), указываем допустимые форматы файлов ($allowed_filetypes), а так же директорию для загрузки ($upload_path). Определяем параметры загруженного изображения, такие как имя файла ($filename), Длину и высоту ($sizefile длинна и высота  хранятся в массиве), размер файла ($size). Затем начинаются различные проверки, после успешной проверки которых, файл с помощью функции move_uploaded_file загружается на сервер. Чтобы избежать повторения имен файлов мы генерируем для них новое имя и переименовываем с помощью rename. Теперь зададим длину и высоту мини-изображения ($smwidth и $smheight). Если формат изображения не будет совпадать с заданным, то пустые места зальются цветом, который мы укажем дальше. Теперь проверим габариты загруженного изображения с заданными, если они больше, то обрезаем картинку, если же меньше, просто копируем картинку. Для обрезки нам понадобиться подключить файл tumbmaker.php, который можно немного отредактировать (В нем и происходит создание нового мини-изображения). Все что мы изменим в нем это цвет заливки пустых полей, о которых уже говорилось выше ($rgb) и качество создаваемого изображения ($quality). Остальное в этом файле трогать не будем. Теперь после загрузки у нас будет оставаться оригенал в папке images и создаваться новое в images/crop. Ну вот и все, что я хотел рассказать. Еще вы можете сделать, что бы все данные заносились в базу и потом использовать их где угодно.

Автор: Евгений Бочкарев Урок добавлен: 13 Октября 2010 в 00:05 Просмотров: 16469

Условия копирования материалов сайта

Все комментарии

Посмотреть предыдущие комментарии (45)

#46 Салават 14-10-2012 в 18:08
как раз что искал. спасибо. сайт из видео нашел по ссылке
#47 Евгений 14-10-2012 в 19:49
Какого видео, если не секрет?
#48 Салават 15-10-2012 в 19:13
с сайта руселер скачал урок про массовый загрузку изображений. там с этого сайта качали скрип и объясняли как он работает точнее как подключить.
#49 Салават 15-10-2012 в 20:21
массовую загрузку изображений
#50 Салават 16-10-2012 в 19:44
как можно осуществить добавление в базу?
if (isset($title) && isset($filename))
{
/* Здесь пишем что можно заносить информацию в базу */
$result = mysql_query ("INSERT INTO imag (title,img) VALUES ('$title','$filename')");
if ($result == 'true') {echo "<p>добален!</p>";}
else {echo "<p>не добален!</p>";}
}
else
{
echo "<p>Вы ввели не всю информацию.</p>";
}
#51 Салават 17-10-2012 в 19:16
Все сделал. сначала делал проверку на существование названия и выбора картинки. потом проверял существование нового имени и заносил в базу данных.
#52 Алекс 25-11-2012 в 21:39
А что делать если массив $_FILES пуст?
#53 slavacomb 27-11-2012 в 10:21
Не могу догнать как сделать что бы изображения добавлялись в базу данных Может кто подскажет
#54 slavacomb 28-11-2012 в 16:22
ну так что не кто не знает что ли как добавить изображение в базу данных я вроде бы сделал но оно добавляться не к юзеру кто зарегистрирован а создает нового юзера без всего без имени и всех остальных полей помогите если знаете что делать я так понял картинку надо прикручивать по id в сессии

но как это сделать???

#55 Тимур 12-05-2013 в 13:09
При ресайзе превьюхи сверху и снизу белые поля появляются..
Добавить новый комментарий

Автор:

Текст сообщения:

Если в комментарии присутствует код, пожалуйста вставляете его между тегами [code][/code]

cap

Код с картинки:


Получать уведомления о новых комментариях по Email могут только зарегистрированные пользователи.

41001346159934
R314489888859
Уроки
Для начинающих
Интересное
Файлы
Полезное
Опрос

Много ли среди программистов девушек?

Последние комментарии
Ссылки