У всех, кто делает социальные сайты или форумы, рано или поздно начинает мучить один вопрос:
Как же получить изображения соответствующих требованиям изображения, загрузив в скрипт файл достаточно большой чем заданные в рамки?
Представляю вам скрипт, написанный мной буквально несколько часов назад. В комментариях все написано, так что обяснять не буду что делает каждаю строка и представлю сам скрипт:
<?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 уроки
