У всех, кто делает социальные сайты или форумы, рано или поздно начинает мучить один вопрос:
Как же получить изображения соответствующих требованиям изображения, загрузив в скрипт файл достаточно большой чем заданные в рамки?
Представляю вам скрипт, написанный мной буквально несколько часов назад. В комментариях все написано, так что обяснять не буду что делает каждаю строка и представлю сам скрипт:
<?php $message = ''; // Для вывода сообщений $MesArray = array('ErrorUpload' => '<span id="ErrorSpan">Ошибка загрузки изображения</span><br>', 'ErrorFormat' => '<span id="ErrorSpan">Разрешенные форматы: JPG, JPEG</span><br>', 'ErrorsDownload' => '<span id="ErrorSpan">Загрузка не удалась</span><br>', 'CompleteUpload' => '<span id="ComleteSpan">Аватар обновлен</span><br>'); // Сообщения пользователю $PerRaz = array('.jpg', '.jpeg'); // Разрешенные форматы if(isset($_POST['GoAvka'])) // Нажали на загрузить, начинаем загрузку { $query_photo = mysql_query("SELECT `photo` FROM `user_site` WHERE `id` = '".(int)$_SESSION['id']."' ") or die(mysql_error()); // запрашиваем фото пользователя $photo = mysql_fetch_assoc($query_photo); // Обрабатываем данную if(in_array(strrchr($_FILES['Avkas']['name'], '.'), $PerRaz)) // Проверяем, подходит ли для загрузки { $img_x = 150; // Ширина готового изображения $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/avatars/'; // Директория для сохранения изображений $uploadfile = $uploaddir.'id'.$_SESSION['id'].'-'.time().'.jpg'; // Файл для сохранения. P.S. $_FILES['Avkas']['name'] - Стандартная имя файла if(move_uploaded_file($_FILES['Avkas']['tmp_name'], $uploadfile)) { $statsimage = getimagesize($uploadfile); // Получаем информацию о загруженном изображении $FileExplodes = explode('/', $uploadfile); // разюиваем текст из ссылки. if(max($statsimage[0], $statsimage[1]) >= $img_x) // Если ширина загруженного изобрадения больше $img_x, то сжимаем его до нужного изображения { $width = $statsimage[0] >= $statsimage[1] ? 150 : floor(150 * ($statsimage[0] / $statsimage[1])); $height = $statsimage[0] <= $statsimage[1] ? 150 : floor(150 * ($statsimage[1] / $statsimage[0])); } else { $width = $statsimage[0]; // Ширина изображения $height = $statsimage[1]; // Высота изображения } $images = imagecreatetruecolor($width, $height); // Создаем изображение $new_images = imagecreatefromjpeg($uploadfile); // Создаем JPEG файл imagecopyresampled($images, $new_images, 0, 0, 0, 0, $width, $height, $statsimage[0], $statsimage[1]); // приклеиваем изображение if(imagejpeg($images, $uploadfile, 100)) // Сохраняем изображение { mysql_query("UPDATE `user_site` SET `photo` = '".mysql_real_escape_string($FileExplodes[4])."' WHERE `id` = '".(int)$_SESSION['id']."' ") or die(mysql_error()); // Обновляем аватар $message .= $MesArray['CompleteUpload']; // Выводим запись об успешном обновлении header('Refresh: 1; URL='.$index.''.$page.''.$_SESSION['id']); // Перенаправляем на главную страницу } else { $message .= $MesArray['ErrorsDownload']; } } else { $message .= $MesArray['ErrorUpload']; // Ошибка загрузки изображения } } else { $message .= $MesArray['ErrorFormat']; } } ?>
Вам осталось всего лишь создать директорию avatars и настроить подключение к СуБД. Можете в функцию впихать если хотите, я сам лично не стал функцию написать! Удачи!
Теги: PHP уроки