Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменить размер картинки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
sgrekoff
Отправлено: 27 Апреля, 2012 - 13:38:30
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Привет всем! у меня есть код:

PHP:
скопировать код в буфер обмена
  1. // Создание квадрата 90x90
  2. // dest - результирующее изображение
  3. // w - ширина изображения
  4. // ratio - коэффициент пропорциональности
  5.  
  6. $w = 100;  // квадратная 90x90. Можно поставить и другой размер.
  7.  
  8. // создаём исходное изображение на основе
  9. // исходного файла и определяем его размеры
  10. $w_src = imagesx($im); //вычисляем ширину
  11. $h_src = imagesy($im); //вычисляем высоту изображения
  12.  
  13.          // создаём пустую квадратную картинку
  14.          // важно именно truecolor!, иначе будем иметь 8-битный результат
  15.          $dest = imagecreatetruecolor($w,$w);
  16.  
  17.          // вырезаем квадратную серединку по x, если фото горизонтальное
  18.          if ($w_src>$h_src)
  19.          imagecopyresampled($dest, $im, 0, 0,
  20.                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),
  21.                           0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
  22.  
  23.          // вырезаем квадратную верхушку по y,
  24.          // если фото вертикальное (хотя можно тоже серединку)
  25.          if ($w_src<$h_src)
  26.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
  27.                           min($w_src,$h_src), min($w_src,$h_src));
  28.  
  29.          // квадратная картинка масштабируется без вырезок
  30.          if ($w_src==$h_src)
  31.          imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
  32.                  
  33.  
  34. $date=time(); //вычисляем время в настоящий момент.
  35. imagejpeg($dest, $path_to_90_directory.$date.".jpg");//сохраняем изображение формата jpg в нужную папку, именем будет текущее время. Сделано, чтобы у аватаров не было одинаковых имен.
  36.  
  37. //почему именно jpg? Он занимает очень мало места + уничтожается анимирование gif изображения, которое отвлекает пользователя. Не очень приятно читать его комментарий, когда краем глаза замечаешь какое-то движение.
  38.  
  39. $avatar = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.
  40.  
  41. $delfull = $path_to_90_directory.$filename;
  42. unlink ($delfull);//удаляем оригинал загруженного изображения, он нам больше не нужен. Задачей было - получить миниатюру.
  43.  
  44. $result7 = mysql_query("SELECT avatar FROM users WHERE login='$old_login'",$db);//извлекаем текущий аватар пользователя
  45. $myrow7 = mysql_fetch_array($result7);
  46.  
  47. if ($myrow7['avatar'] == $ava) {//если он стандартный, то не удаляем его, ведь у нас одна картинка на всех.
  48. $ava = 1;
  49. }
  50. else {unlink ($myrow7['avatar']);}//если аватар был свой, то удаляем его
  51.  
  52.  
  53. }
  54. else
  55.         {
  56.                 //в случае несоответствия формата, выдаем соответствующее сообщение
  57.         exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
  58.                 }
  59.  
  60. }
  61.  
  62. $result4 = mysql_query("UPDATE users SET avatar='$avatar' WHERE login='$old_login'",$db);//обновляем аватар в базе
  63. if ($result4=='TRUE') {//если верно, то отправляем на личную страничку
  64. echo "<html><head><meta http-equiv='Refresh' content='5'; URL=page.php?id=".$_SESSION['id']."'></head><body>Ваша аватарка изменена! Вы будете перемещены через 5 сек. Если не хотите ждать, то <a href='page.php?id=".$_SESSION['id']."'>нажмите сюда.</a></body></html>";}
  65.  
  66.       }
  67. ?>

картинка 90х90 делается, подскажите пожалуйста, как исправить, чтобы картинка любых размеров уменьшалась например 100х120. а не обрезалась по голову.


Отредактировано модератором: Мелкий, 27 Апреля, 2012 - 16:18:19
 
 Top
Alho
Отправлено: 27 Апреля, 2012 - 14:17:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




1) Никогда не выбрасывайте код просто в сообщение, для этого придумали специальный-волшебный- и т.д. тег [PHP]
2) Код вполне очевиден - тем более с таким количеством комментариев. Что бы изображение не обрезалось достаточно убрать два блока обрезки. И следующий блок как раз растянет/уменьшит до нужных размеров.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB