else if (isset($_FILES['fupload']['name'])) //отправлялась ли переменная {
if (empty($_FILES['fupload']['name'])) { //если переменная пустая (пользователь не отправил изображение),то присваиваем ему заранее приготовленную картинку с надписью "нет аватара" $avatar = "avatars/no-avatar.jpg"; //можете нарисовать no-avatar.jpg или взять в исходниках $result7 = mysql_query("SELECT avatar FROM users WHERE login='$old_login'",$db);//извлекаем текущий аватар $myrow7 = mysql_fetch_array($result7); if ($myrow7['avatar'] == $ava) {//если аватар был стандартный, то не удаляем его, ведь у на одна картинка на всех. $ava = 1; } else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его, затем поставим стандарт }
else { //иначе - загружаем изображение пользователя для обновления $path_to_120_directory = 'avatars/';//папка, куда будет загружаться начальная картинка и ее сжатая копия
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения {
if(preg_match('/[.](GIF)|(gif)$/', $filename)) { $im = imagecreatefromgif($path_to_120_directory.$filename); //если оригинал был в формате gif, то создаем изображение в этом же формате. Необходимо для последующего сжатия } if(preg_match('/[.](PNG)|(png)$/', $filename)) { $im = imagecreatefrompng($path_to_120_directory.$filename);//если оригинал был в формате png, то создаем изображение в этом же формате. Необходимо для последующего сжатия }
if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) { $im = imagecreatefromjpeg($path_to_120_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же формате. Необходимо для последующего сжатия }
//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ ВЗЯТО С САЙТА www.codenet.ru
// Создание квадрата 120x120 // dest - результирующее изображение // w - ширина изображения // ratio - коэффициент пропорциональности
$w = 120; // квадратная 120x120. Можно поставить и другой размер.
// создаём исходное изображение на основе // исходного файла и определяем его размеры $w_src = imagesx($im); //вычисляем ширину $h_src = imagesy($im); //вычисляем высоту изображения
// создаём пустую квадратную картинку // важно именно truecolor!, иначе будем иметь 8-битный результат $dest = imagecreatetruecolor($w,$w);
// вырезаем квадратную серединку по x, если фото горизонтальное 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));
// вырезаем квадратную верхушку по y, // если фото вертикальное (хотя можно тоже серединку) if ($w_src<$h_src) imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
// квадратная картинка масштабируется без вырезок if ($w_src==$h_src) imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$date=time(); //вычисляем время в настоящий момент. imagejpeg($dest, $path_to_120_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
//почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
$avatar = $path_to_120_directory.$date.".jpg";//заносим в переменную путь до аватара.
$delfull = $path_to_120_directory.$filename; unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
$result7 = mysql_query("SELECT avatar FROM users WHERE login='$old_login'",$db);//извлекаем текущий аватар пользователя $myrow7 = mysql_fetch_array($result7);
if ($myrow7['avatar'] == $ava) {//если он стандартный, то не удаляем его, ведь у нас одна картинка на всех. $ava = 1; } else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его
} else { //в случае несоответствия формата, выдаем соответствующее сообщение exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>"); }
}
if ($filename == "no-avatar.jpg") {exit("<p>Файл с таким именем на сервере уже существует! Измените имя на другое!<p>");}
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
Kup
Слева загружаемое изображение, справа после обработки этим скриптом
Вопрос: как убрать это убожеское сжатие? никаких настроек в скрипте не нашел...
и еще, картинка на сервере по уморланию no-avatar.jpg, и если загружать с компа no-avatar.jpg то этот файл удаляется, хоть он и должен оставаться...
if ($filename == "no-avatar.jpg") {exit("<p>Файл с таким именем на сервере уже существует! Измените имя на другое!<p>");}
проблемы с сжатием так и не решил(
Edited by KupLink to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.