<? $final_width_of_image = 100; //Размер изображения, которые надо получить (и ширина и высота) $path_to_image_directory = 'images/full/'; //Папка, куда будут загружаться полноразмерные изображения $path_to_thumbs_directory = 'images/thumbs/'; //Папка, куда будут загружать миниатюры ?>
<?php require 'config.php'; //Подключаем файл конфигурации require 'process.php'; //Подключаем обработчик if(isset($_FILES['fupload'])) { if(preg_match('/[.](jpg)|(gif)|(png)$/', //Ставим допустимые форматы изображений для загрузки $_FILES['fupload']['name'])) { $filename = $_FILES['fupload']['name']; $source = $_FILES['fupload']['tmp_name']; $target = $path_to_image_directory . $filename; move_uploaded_file($source, $target); createThumbnail($filename); } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Загрузка изображений</title> </head> <body> <div align="center"> <h1>Загрузка изображений:</h1> <form enctype="multipart/form-data" method="post"> <input type="file" name="fupload" /> <input type="submit" value="Загрузить" /> </form> </div> </body> </html>
<? function createThumbnail($filename) { require 'config.php'; //Подключаем файл конфигурации if(preg_match('/[.](jpg)$/', $filename)) { $im = imagecreatefromjpeg($path_to_image_directory . $filename); } else if (preg_match('/[.](gif)$/', $filename)) { $im = imagecreatefromgif($path_to_image_directory . $filename); } else if (preg_match('/[.](png)$/', $filename)) { $im = imagecreatefrompng($path_to_image_directory . $filename);} //Определяем формат изображения $ox = imagesx($im); $oy = imagesy($im); $nx = $final_width_of_image; $ny = floor($oy * ($final_width_of_image / $ox)); $nm = imagecreatetruecolor($nx, $ny); imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy); if(!file_exists($path_to_thumbs_directory)) { if(!mkdir($path_to_thumbs_directory)) { die("Проблемы? Попробуйте снова!");} } imagejpeg($nm, $path_to_thumbs_directory.$filename); $tn = '<div align="center"><img src="'.$path_to_thumbs_directory.$filename.'" alt="image" />'; $tn .= '<br /><h3>Изображение успешно загружено, его миниатюра удачно выполнена.<br /> Выше Вы можете просмотреть результат</h3></div>'; echo $tn; } //Сжимаем изображение, если есть ошибки-выводим, если их нет, то выводим получившуюся миниатюру ?>
<script>alert(document.cookie);</script>
+ADw-script+AD4-alert(document.cookie)+ADsAPA-/script+AD4-
<? // поехали 😀 if (!empty($_FILES['imgs'])) { // назначим наши переменные $imgs = $_FILES['imgs']; $imgs_size = $_FILES['imgs']['size']; $imgs_type = $_FILES['imgs']['type']; $imgs_name = $_FILES['imgs']['name']; $imgs_tmp_name = $_FILES['imgs']['tmp_name']; // задаем максимальный вес картинки, если превышен, то выводим ошибку if ($imgs_size > 5*1024*1000) die ('<center>Размер картинки превысил лимит в 5 МБ. <a href="'.$PHP_SELF.'">Загрузить заного</a></center>'); // получаем расширения файлов для загрузки preg_match("'([a-z]+)\/[x\-]*([a-z]+)'", $imgs_type, $ext); switch($ext[2]) { case "jpg": case "jpeg": case "pjpeg": break; default: die("<center>Ошибка!<br />\n Допускаются файлы: <b>.jpg, .jpeg, .pjpeg</b> до 5МБ<br /> <a href='{$PHP_SELF}'>Загрузить заного</a></center>"); } // задаем допустимые размеры картинок для загрузки $width_max = 640; $height_max = 480; // получаем размеры $img_size = getimagesize($imgs_tmp_name); $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>"); // создадим пустое изображение с нужными нам размерами $image_p = imagecreatetruecolor($width_max, $height_max); // собственно создали 😀 $image = imagecreatefromjpeg($imgs_tmp_name); // определим пропорции для дальнейшей обрезки до них $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) { $image_p_1 = imagecreatetruecolor($width_max, $h_new); // выполним копирование и ресамдлинг нашей картинки, т.е. с помощью 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) { $image_p_1 = imagecreatetruecolor($w_new, $height_max); // сного выполним копирование и ресамдлинг нашей картинки, т.е. с помощью 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); } // если все размеры соблюдены, то сжимаем elseif ($w_h_prp == $curr_prp) { imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width_max, $height_max, $width_original, $height_original); } // определяем время для названия картинки, удобно если заносим в базу сортировать по времени добавления $time = time(); // определяем пути до картинок и их миниатюр и названия для них $imgs_path = "images/full/{$time}.jpg"; $thumb_path = "images/thumbs/{$time}.jpg"; if (imagejpeg($image_p, $imgs_path, 100)) { // если все замечательно, создаем файл миниатюры, метод немного отличается для разнообразия от того, что описан выше, если захотите можете потренироваться и сделать создание миниатюр так же как и выше $thumb_width = 150; $thumb_height = 113; $thumb = imagecreatetruecolor($thumb_width, $thumb_height); $w_point = (($width_original - $thumb_width) / 2); $h_point = (($height_original - $thumb_height) / 2); imagecopyresampled($thumb, $image, 0, 0, $w_point, $h_point, $thumb_width, $thumb_height, $thumb_width, $thumb_height); imagejpeg($thumb, $thumb_path, 100); // описываем вывод, опять же, если захотите можете выводить запрос в базу данных или куда еще будет угодно $vvd = "тут можно отправить запрос в базу"; if ($vvd) { echo "<div align='center'><img src='$imgs_path' alt='image' /><br /><h4>Изображение успешно загружено</h4><img src='$thumb_path' alt='image' /><br /><h4>Его миниатюра удачно создана.</h4><br /><h2>Поздравляем!!!</h2><br />\n<a href='{$PHP_SELF}'>Загрузить ещё</a></div>"; } // очередная проверка, если картинка ни куда не добавлена, то ошибка else { echo "Ошибка. Картинка не добавлена!"; unlink($imgs_path); unlink($thumb_path); } } // вывод ошибки при копировании else print ("Ошибка!"); } else { // ну и наконец то наша форма для загрузки картинок echo "<html>\n"; echo "<head>\n"; echo "<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>\n"; echo "<title>Загрузка изображений</title>\n"; echo "</head>\n"; echo "<body>\n"; echo "<div align='center'><h1>Загрузка изображений:</h1>\n"; echo "<form action='{$PHP_SELF}' method='post' enctype='multipart/form-data'>\n"; echo "<h3>Выбрать файл для загрузки:</h3><input name='imgs' type='file' size='50' /><br /><br />\n"; echo "<input type='submit' value='Загрузить' /> <input type='reset' value='Отменить'><br />Разрешено загружать только: <b>.jpg, .jpeg, .pjpeg</b> файлы весом до 5МБ.<br />\n"; echo "</form>\n"; echo "</div>\n"; echo "</body>\n"; echo "</html>"; } // и в конце то концов, это метод загрузки картинок расширений джипег, для остальных разрешений, если захотите можете написать свои функции, используя например такие функции как imagecreatefromgif, imagecreatefrompng и т.д. ?>