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 :: Изменение размеров изображения gif (анимированного)

 PHP.SU

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


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

> Описание: Не получается
Konsul
Отправлено: 09 Июня, 2009 - 06:12:28
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2009  


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




Здравствуйте!

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

CODE (text):
скопировать код в буфер обмена
  1. function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $proportion=false, $quality=100) {
  2.     if(!file_exists($src)) return false;
  3.     $size = getimagesize($src);
  4.     if($size === false) return false;  
  5.     if($proportion === true) {
  6.         $h0 = $height;
  7.         $height = ($width/$size[0])*$size[1];
  8.         if($height > $h0) { $height = $h0; $width = ($height/$size[1])*$size[0]; }}
  9.         if(!$zoom){
  10.                 if($width > $size[0]) $width = $size[0];
  11.             if($height > $size[1]) $height = $size[1];
  12.         }
  13.     $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
  14.     $icfunc = 'imagecreatefrom'.$format;
  15.     if(!function_exists($icfunc)) return false;
  16.     $x_ratio = $width/$size[0];
  17.     $y_ratio = $height/$size[1];
  18.     $ratio = min($x_ratio, $y_ratio);
  19.     $use_x_ratio = ($x_ratio == $ratio);
  20.     if($use_x_ratio) { $new_width = $width; $new_left = 0; }
  21.     else { $new_width = floor($size[0] * $ratio); $new_left = floor(($width - $new_width) / 2); }
  22.     if(!$use_x_ratio) { $new_height = $height; $new_top = 0; }
  23.     else { $new_height = floor($size[1] * $ratio); $new_top = floor(($height - $new_height) / 2); }
  24.     $isrc = $icfunc($src);
  25.     $idest = imagecreatetruecolor($width, $height);
  26.     if(is_array($dest)) {
  27.         $nd = explode('.', $src);
  28.         $ndc = count($nd);
  29.         $nd[$ndc - 2] .= $dest[0]; $dest = implode('.', $nd); }
  30.     imagefill($idest, 0, 0, $rgb);
  31.     imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
  32.     imagejpeg($idest, $dest, $quality);
  33.     imagedestroy($isrc);
  34.     imagedestroy($idest);
  35.     return $dest;
  36. }


Всё хорошо, но один изъян: после обработки этой функцией анимированные gif'ы перестают быть анимированными, т.е. представляют собой обычное изображение. Какой функцией воспользоваться или как усовершенствовать эту, чтобы анимация не пропадала после обработки?

Заранее спасибо!
 
 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