У всех, кто делает социальные сайты или форумы, рано или поздно начинает мучить один вопрос:
Как же получить изображения соответствующих требованиям изображения, загрузив в скрипт файл достаточно большой чем заданные в рамки?

Представляю вам скрипт, написанный мной буквально несколько часов назад. В комментариях все написано, так что обяснять не буду что делает каждаю строка и представлю сам скрипт:

Код:
<?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 уроки