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]   

> Без описания
Бублик
Отправлено: 27 Января, 2009 - 10:05:04
Post Id


Частый гость


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


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

[+]


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

(Отредактировано автором: 27 Января, 2009 - 10:05:21)

 
 Top
Stierus Супермодератор
Отправлено: 27 Января, 2009 - 10:11:43
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




не будет полос - будет деформация картинки (растягиваться и ужиматься по вертикали и горизонтали)
 
My status
 Top
Бублик
Отправлено: 27 Января, 2009 - 10:12:56
Post Id


Частый гость


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


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

[+]


Тут на форуме где-то была функция (Валенок приводил), так вот там появлялись белые полосы. А мне надо чтобы не появлялись.
 
 Top
Джур
Отправлено: 27 Января, 2009 - 12:14:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007  


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function resize($infile,$outfile,$neww,$newh,$quality=80)
  3.   {
  4.     $pr=@getimagesize($infile);
  5.     switch($pr['mime']){
  6.       case 'image/jpeg':
  7.         $im=imagecreatefromjpeg($infile);
  8.         $ext='jpg';
  9.         break;
  10.       case 'image/png':
  11.         $im=imagecreatefrompng($infile);
  12.         $ext='png';
  13.         break;
  14.       case 'image/gif':
  15.         $im=imagecreatefromgif($infile);
  16.         $ext='gif';
  17.         break;
  18.       default:
  19.         return false;
  20.     }
  21.  
  22.     $ix = $pr[0];
  23.     $iy = $pr[1];
  24.     $iyr = $iy*$neww;
  25.     $iyr = $iyr/$ix;
  26.     $ixr = $ix*$newh;
  27.     $ixr = $ixr/$iy;
  28.     if($iyr < $newh){
  29.       $newh = $iyr;
  30.     }else{
  31.       $neww = $ixr;
  32.     }
  33.  
  34.     $im1=imagecreatetruecolor($neww,$newh);
  35.     imagecopyresampled($im1,$im,0,0,0,0,$neww,$newh,$pr[0],$pr[1]);
  36.  
  37.     if(is_string($outfile) and substr($outfile,-3)!=$ext) $ext=substr($outfile,-3);
  38.  
  39.     switch($ext){
  40.       case 'jpg':
  41.         imagejpeg($im1,$outfile,$quality);
  42.         break;
  43.       case 'png':
  44.         imagepng($im1,$outfile);
  45.         break;
  46.       case 'gif':
  47.         imagegif($im1,$outfile);
  48.         break;
  49.       default:
  50.         echo 'not_file_type';
  51.         return false;
  52.     }
  53.  
  54.     imagedestroy($im);
  55.     imagedestroy($im1);
  56.     return true;
  57.   }

(Отредактировано автором: 27 Января, 2009 - 12:15:51)



-----
Тамбовский каджит тебе товарищ
 
 Top
Бублик
Отправлено: 27 Января, 2009 - 13:03:02
Post Id


Частый гость


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


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

[+]


Джур
Почти то что нужно. При исходном размере картинки 325x488, картинка ужалась до 76х106. При том, что вызвал функцию с так resize('2.jpg', '3.jpg', 104, 106);. Как видно из результата, требованию соответствует только высота. А как исправить/написать чтобы требованиям соответствовали и ширина и высота?
 
 Top
Stierus Супермодератор
Отправлено: 27 Января, 2009 - 13:54:00
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




ты в фотошопе или в пэйнте приведи вручную к нужному размеру и посмотри на результат (всё растягивается) - тебе это нужно ?
 
My status
 Top
Бублик
Отправлено: 27 Января, 2009 - 13:58:49
Post Id


Частый гость


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


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

[+]


Я приводил в PAINT'e.NET. Ничего не растягивается! Изображение остается таким же, только с размерами 104x106px's
 
 Top
Stierus Супермодератор
Отправлено: 27 Января, 2009 - 14:03:20
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




325/104 = 3,125
488/106 = 4,604

пропорции разные, включай мозги.
(Добавление)
Ладн, делай как знаешь, я предупреждал, что сотворить пытаешься фигню

Удали это:
PHP:
скопировать код в буфер обмена
  1. $ix = $pr[0];
  2.     $iy = $pr[1];
  3.     $iyr = $iy*$neww;
  4.     $iyr = $iyr/$ix;
  5.     $ixr = $ix*$newh;
  6.     $ixr = $ixr/$iy;
  7.     if($iyr < $newh){
  8.       $newh = $iyr;
  9.     }else{
  10.       $neww = $ixr;
  11.     }
 
My status
 Top
Гость
Отправлено: 27 Января, 2009 - 15:20:11
Post Id


УДАЛЁН










Может ему нужно иконки (thumbnails) делать надо размера 40х40 то тогда качетсво и кривизна не так важны лишб бы было видно что же нарисовано примерно
 
 Top
Stierus Супермодератор
Отправлено: 27 Января, 2009 - 15:22:12
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


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




JustUserR, цифры
325/104 = 3,125
488/106 = 4,604
я не из головы взял, это он дал Улыбка

ps
Давно хотел спросить про "Хостинг от 5 рублей в месяц с PHP/MySQL, unlim traffic и много другого" .. нафиг те 5 рублей ?Улыбка Ссылку не смотрел - с работы доступ закрыт, но хостинг нужен, поподробнее можно ?Улыбка

(Отредактировано автором: 27 Января, 2009 - 15:23:16)

 
My status
 Top
Гость
Отправлено: 27 Января, 2009 - 16:46:49
Post Id


УДАЛЁН










Цитата:
Давно хотел спросить про "Хостинг от 5 рублей в месяц с PHP/MySQL, unlim traffic и много другого" .. нафиг те 5 рублей ? Ссылку не смотрел - с работы доступ закрыт, но хостинг нужен, поподробнее можно ?
Выслал в ЛС Улыбка
 
 Top
valenok Модератор
Отправлено: 27 Января, 2009 - 18:39:16
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




imagecopyresampled

bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
Эта функция делает очень простую задачу. Вырезает прямоугольный кусочек из одной картинки, изменяет её размер, сжимает или расширяет, растягивает или сужает и вставляет в новую картинку.

Это одна из самых дофига-аргументных функций и сейчас ты увидишь что даже тут всё очень просто.
resource $dst_image , resource $src_image - откуда и куда. Оба являются указателями на изображения в памяти.
int $dst_x , int $dst_y , int $src_x , int $src_y
Как я уже сказал, функция вырезает прямоугольные части. Тут мы обозначаем левый верхний угол нашего прямоугольники в исходном изображении и ту же точку в новом изображении.
int $dst_w , int $dst_h , int $src_w , int $src_h - ширина и высота этого прямоугольника на новом изображении и ширина и высота прямоугольника вырезанного из исходного изображения.

А теперь простыми словами и по русски:
Берем исходную картинку resource $src_image , вырезаем из неё прямоугольник левые верхний угол которого в точке int $src_x , int $src_y а высота и ширина int $src_w , int $src_h. Всё просто?
А теперь этот прямоугольник с изображением сжимаем, растягиваем, сужаем, расширяем так, чтобы его новые длина и ширина соответствовали int $dst_w , int $dst_h .
После чего этот новый прямоугольник вклиниваем на новое изображение в точке int $dst_x , int $dst_y.

http://php.su/forum/topic.php?fo...=62&topic=17


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB