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 :: Функция resize для фото

 PHP.SU

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


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

> Описание: Функция resize для фото
Dee
Отправлено: 07 Октября, 2015 - 18:24:48
Post Id



Частый гость


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


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




Всем привет,делал функцию ресайза ,но нужно получить на выходе квадратные изображения и в тот же момент,чтобы все смотрелось боле менее .

В общем я уже почти все сделал,но я что-то не догоняю как обрезать края фотографии. Получается какая-то хрень.
Тут все работает ,но пример такой.
На выходе я получаю фото 333 х 250
А должен 250 на 250 и чтобы он не растягивал,а обрезал края и позиционировался по центру.

PHP:
скопировать код в буфер обмена
  1. function resize ($name,$tmp,$file) {
  2.         $image = addslashes (file_get_contents ($tmp));  
  3.         $image_name = addslashes ($name);
  4.                 $info = getimagesize($tmp);            
  5.                 $width = $info['0'];        
  6.         $height = $info['1'];
  7.         $ext = $info['2'];
  8.                 $type = $info['mime'];
  9.                
  10.                 if ($width > $height && $height > 250) {
  11.                         $proc = $height / 250;
  12.                         $h = $height / $proc;
  13.                         $w = $width / $proc;                   
  14.                         $thumb = imagecreatetruecolor($w,$h);
  15.                         $afb = $file;
  16.                         $temp = $afb['tmp_name'];
  17.                         if ( $type == "image/png" ) { $source = imagecreatefrompng($tmp); }
  18.                         else if ( $type == "image/jpeg" ) { $source = imagecreatefromjpeg($tmp); }
  19.                         imagecopyresampled($thumb, $source, 0 , 0, 0, 0, $w, $h, $width, $height);
  20.                         $thumbname = "../img/resize_prod/".$image_name;
  21.                         imagejpeg ($thumb, $thumbname);
  22.                         move_uploaded_file ("",$thumbname);
  23.                 }
  24. }
 
 Top
broshurkaplus
Отправлено: 07 Октября, 2015 - 19:24:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 354
Дата рег-ции: Янв. 2011  
Откуда: Пружаны Бресткая обл. Беларусь


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




в общем случае такой алгоритм:
ширина 333
надо 250
начинаете копировать в новое изображение начиная с
(ширина-250)/2 те тут 41,5 старого
а у вас лепится все с 00 в 00

если чтоб не обрезал - сначала проверяете чсо больше ширина или высота. а отсюда одну из сторон приравниваете за 1 (250) а вторую множите на кэф, начинаете рисовать отступив сверху или слева сколько надо, чтоб вписываемая картинка была посередине.
 
 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