Смысл в том,что бы сохранить в базу три изображения: 1. Исходное. 2. Размером 180х180. 3. Размером 80х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); $big_avatar = $target; $target_smoll = $path_to_directory."smoll_".$date.".jpg"; move_uploaded_file($source, $target_smoll); 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 = 180; $w_src = imagesx($im); $h_src = imagesy($im); $dest = imagecreatetruecolor ($w,$w); $w_s = 80; $dest_s = imagecreatetruecolor ($w_s,$w_s); 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)); imagecopyresampled ($dest_s, $im, 0, 0, round ((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w_s, $w_s, 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)); imagecopyresampled ($dest_s, $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); imagecopyresampled ($dest_s, $im, 0, 0, 0, 0, $w_s, $w_s, $w_src, $w_src); } } } imagejpeg($dest, $path_to_directory.$date.".jpg"); $avatar = $path_to_directory.$date.".jpg"; imagejpeg($dest_s, $path_to_directory."smoll_".$date.".jpg"); $smoll_avatar = $path_to_directory."smoll_".$date.".jpg"; На выходе: Оригинал сохраняется как нужно, 180х180 тоже всё как хочу,а 80х80 обрезается в верхний левый ряд.Всё с ним делаю как и с 180х180,а результат другой.Нужны не обрезанные углы,а миниатюры... Прошу помощи...
Ох и завалили Вы меня советами и разъяснениями...прямо и не знаю какой совет более подходящим будет!!! Времени нет столько всего прочесть...
Ты забыл сообщить, что проблема возникает с вертикальными картинками. Тогда бы круг поиска проблемы сузился, и сразу бы стало ясно, что ты неправильно указал исходную ширину и высоту для мелкого изображения. Заменить $w на $w_s: Код (PHP): imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src)); imagecopyresampled($dest_s, $im, 0, 0, 0, 0, $w_s, $w_s, min($w_src,$h_src), min($w_src,$h_src));
Спасибо!!! Щас попробую,но мне тут на другом форуме подсказали,а точнее обозвали,мой код "говнокодом",вот и думаю теперь всё переделывать с изучением совсем других способов,а точнее применением других скриптов...!!! Ещё раз спасибо!
Да ладно,тут и так всё ясно... Основная работа не позволяет в полной мере всё изучать,а так знаний на что хватает, то и пишу...короче:учиться,учиться и ещё раз учиться!!!