Есть вот это: Код (Text): $imageinfo = getimagesize($_FILES['fupload']['tmp_name']); if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/jpg' && $imageinfo['mime'] != 'image/png') { exit ("Что-то Вы не то грузить пытаетесь!"); } else { //делаем большую картинку $path_to_directory = "files/avatars/"; $filename = $_FILES['fupload']['name']; $source = $_FILES['fupload']['tmp_name']; $date = time(); $target = $path_to_directory."big_".$date.".jpg"; move_uploaded_file($source, $target); if(preg_match('/[.](GIF)|(gif)$/', $filename)) { $im = imagecreatefromgif($target); } if(preg_match('/[.](PNG)|(png)$/', $filename)) { $im = imagecreatefrompng($target); } if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) { $im = imagecreatefromjpeg($target); } $w = 120; $w_src = imagesx($im); $h_src = imagesy($im); $dest = imagecreatetruecolor ($w,$w); if ($w_src > $h_src) { imagecopyresampled ($dest, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); } else { if ($w_src < $h_src) { imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); } else { if ($w_src == $h_src) { imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); } } } imagejpeg($dest, $path_to_directory.$date.".jpg"); $avatar = $path_to_directory.$date.".jpg"; $big_avatar = $target; Что-то тут передрал с сайтов,что-то сам дописал... Смысл: берет изображение,если не квадрат,то обрезает снизу и делает 120 на 120. Хочу:что бы создавало не только 120 на 120,но и копию изображения,но одна сторона 600,а вторая остаток от оригинала + белый фон.Как-то так... Вопрос:как это сделать?
Нужно,что бы изображение не обрезалось,а просто уменьшалось в размерах. Ну,вот есть 1020х800.Я хочу получить 102х102...А у меня при уменьшении получится 102х80,и вот остальные 22 пикселя (лишние) хочу что бы замещались белым цветом...
Код (Text): $im = imagecreatetruecolor(102, 102); // установка белого фона $white = imagecolorallocate($im, 255, 255, 255); imagefill($im, 0, 0, $white); // копирование собственно изображения imagecopyresempled( $im , $im102x80, 0, 0, 0, 0, 102, 80, 102, 80);
Огромное спасибо Вам за помощь!!!Очень помогло...,но я решил чуть по другому сделать: Вот что получилось: Код (Text): $path_to_directory = "files/avatars/"; $filename = $_FILES['fupload']['name']; $source = $_FILES['fupload']['tmp_name']; $date = time(); $target = $path_to_directory."big_".$date.".jpg"; move_uploaded_file($source, $target); if(preg_match('/[.](GIF)|(gif)$/', $filename)) { $im = imagecreatefromgif($target); } if(preg_match('/[.](PNG)|(png)$/', $filename)) { $im = imagecreatefrompng($target); } if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) { $im = imagecreatefromjpeg($target); } //уменьшенную копию орегинала $wB = 600; $w = 140; $w_src = imagesx($im); $h_src = imagesy($im); $dest = imagecreatetruecolor ($w,$w); if ($w_src > $h_src) { $q=$w_src/$h_src; $qwe=$wB/$q; $destB = imagecreatetruecolor ($wB, $qwe); imagecopyresampled ($dest, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $qwe, $w, min($w_src,$h_src), min($w_src,$h_src)); imagecopyresampled ($destB, $im, 0, 0, 0, 0, $wB, $qwe, $w_src, $h_src); } else { if ($w_src < $h_src) { $q=$h_src/$w_src; $qwe=600/$q; $destB = imagecreatetruecolor ($qwe, $wB); imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); imagecopyresampled ($destB, $im, 0, 0, 0, 0, $qwe, $wB, $w_src, $h_src); } else { if ($w_src == $h_src) { $destB = imagecreatetruecolor ($wB,$wB); imagecopyresampled ($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src); imagecopyresampled ($destB, $im, 0, 0, 0, 0, $wB, $wB, $w_src, $h_src); } } } //удалить орегинал imagejpeg($dest, $path_to_directory.$date.".jpg"); imagejpeg($destB, $path_to_directory."big_".$date.".jpg"); $avatar = $path_to_directory.$date.".jpg"; $big_avatar = $path_to_directory."big_".$date.".jpg"; $sql16 = "SELECT `avatar` FROM `fotouser` WHERE `id_user_ava` = '$old_id'"; $result16 = mysql_query($sql16, $db_foto)or die("Ошибка в запросе: " . mysql_error()); Получается одно изображение 140х140,а второе уменьшенная копия от оригинала,но большая сторона не больше 600px. Вот такой я замечательный супер программёр!!!))))