PHP.SU

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

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

> Найдено сообщений: 1
Konsul Отправлено: 09 Июня, 2009 - 06:12:28 • Тема: Изменение размеров изображения gif (анимированного) • Форум: Напишите за меня, пожалуйста

Ответов: 0
Просмотров: 45
Здравствуйте!

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

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'ы перестают быть анимированными, т.е. представляют собой обычное изображение. Какой функцией воспользоваться или как усовершенствовать эту, чтобы анимация не пропадала после обработки?

Заранее спасибо!

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB