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]   

> Без описания
GEN_18
Отправлено: 23 Октября, 2012 - 22:25:26
Post Id



Частый гость


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


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




Ребят, ни как не могу решить одну проблему:
Дали задание - написать скрипт, который при загрузке любого изображения(горизонтального, вертикального, квадратного), делал ресайз этого изображения размером 300 на 204. Вроде все просто, но есть условие, что если размер загружаемого изображения не пропорционален размеру выходного, то нужно его обрезать так, чтоб после ресайза обрезанного изображения можно было получить не искаженную, без потерь качества, картиночку 300 на 204 (грубо говоря, просто уменьшенную копию)

как обычный ресайз делать - это я знаю. Не могу найти как обрезать изображение(горизонтальное, вертикальное, квадратное) так, чтоб потом провести этот ресайз


-----
Еще вечера сегодня было завтра.
 
 Top
Okula
Отправлено: 23 Октября, 2012 - 22:43:15
Post Id



Участник


Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010  


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




GEN_18, для того чтобы изображение не исказилось придётся изменять один из параметров (ширину или высоту). И уже пропорционально расчитывать второе значение.
В школе пропорции научили считать? Так вот тут так же Улыбка
 
 Top
dubasua
Отправлено: 23 Октября, 2012 - 22:59:20
Post Id



Посетитель


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


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




Сначала пропорционально уменьшаешь картинку до те тех пор пока у тебя высота не станет 204 или ширина 300. А потом и смотришь что тебе нужно обрезать. Как правило обрезают или средину или с левого верхнего угла.
 
 Top
DlTA
Отправлено: 24 Октября, 2012 - 00:01:22
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




есть у меня вот такая функция немного иной функционла, но можно допилить
описание: есть входное, любого размер, и есть выходной размер, исходное пропорционально масштабируется, максимально подгоняясь под выходной размер,
Спойлер (Отобразить)
 
 Top
GEN_18
Отправлено: 24 Октября, 2012 - 09:13:43
Post Id



Частый гость


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


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




Okula, вот именно, только как это сделать...я пока не врубил, но пытаюсь ))

DlTA, Ваш скрипт отлично работает, подгонят под заданные параметры(или высоту, или ширину), впрочем, как и писали, нужно доработать, чтоб картинки получались точно выходного размера

Откапал в старых скриптах что то похожее:
PHP:
скопировать код в буфер обмена
  1. function imageresize($outfile,$infile,$neww,$newh,$quality) {
  2.     $im=imagecreatefromjpeg($infile);
  3.     $k1=$neww/imagesx($im);
  4.     $k2=$newh/imagesy($im);
  5.     $k=$k1>$k2?$k2:$k1;
  6.  
  7.     $w=intval(imagesx($im)*$k);
  8.     $h=intval(imagesy($im)*$k);
  9.  
  10.     $im1=imagecreatetruecolor($w,$h);
  11.     imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
  12.  
  13.     imagejpeg($im1,$outfile,$quality);
  14.     imagedestroy($im);
  15.     imagedestroy($im1);
  16.     return true;
  17.     }


но у DlTA все равно лучше
ура, теперь я получаю всегда на выходе изображение размером 300 на xxx
теперь осталось только обрезать его, как сказал dubasua
А как сделаю - выложу скрипт

(Отредактировано автором: 24 Октября, 2012 - 10:15:28)



-----
Еще вечера сегодня было завтра.
 
 Top
Panoptik
Отправлено: 24 Октября, 2012 - 10:14:46
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




Спойлер (Отобразить)
вот мое наработанное. несколько параметризированное. режет пропорционально картинку согласно размерам и центрирует согласно параметрам


-----
Just do it
 
 Top
GEN_18
Отправлено: 24 Октября, 2012 - 10:41:18
Post Id



Частый гость


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


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




Panoptik АААААААааффигенно!!! как раз то, что нужно
спасибо!!!
И всем спасибо за свои скрипты и помощь.
Но, все же, я для себя, попробую еще усовершенствоать скрипт DlTA


еще раз спасибо!!! очень выручили

(Отредактировано автором: 24 Октября, 2012 - 10:44:54)



-----
Еще вечера сегодня было завтра.
 
 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