Новичок
Покинул форум
Сообщений всего: 1
Дата рег-ции: Июнь 2009
Помог: 0 раз(а)
|
Здравствуйте!
Проблема такая - необходимо изменять размеры загружаемых изображений. Особых проблем нет, использую следующую функцию:
CODE ( text):
скопировать код в буфер обмена
function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $proportion=false, $quality=100) { if(!file_exists($src)) return false; $size = getimagesize($src); if($size === false) return false; if($proportion === true) { $h0 = $height; $height = ($width/$size[0])*$size[1]; if($height > $h0) { $height = $h0; $width = ($height/$size[1])*$size[0]; }} if(!$zoom){ if($width > $size[0]) $width = $size[0]; if($height > $size[1]) $height = $size[1]; } $format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1)); $icfunc = 'imagecreatefrom'.$format; if(!function_exists($icfunc)) return false; $x_ratio = $width/$size[0]; $y_ratio = $height/$size[1]; $ratio = min($x_ratio, $y_ratio); $use_x_ratio = ($x_ratio == $ratio); if($use_x_ratio) { $new_width = $width; $new_left = 0; } else { $new_width = floor($size[0] * $ratio); $new_left = floor(($width - $new_width) / 2); } if(!$use_x_ratio) { $new_height = $height; $new_top = 0; } else { $new_height = floor($size[1] * $ratio); $new_top = floor(($height - $new_height) / 2); } $isrc = $icfunc($src); $idest = imagecreatetruecolor($width, $height); if(is_array($dest)) { $nd = explode('.', $src); $ndc = count($nd); $nd[$ndc - 2] .= $dest[0]; $dest = implode('.', $nd); } imagefill($idest, 0, 0, $rgb); imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]); imagejpeg($idest, $dest, $quality); imagedestroy($isrc); imagedestroy($idest); return $dest; }
Всё хорошо, но один изъян: после обработки этой функцией анимированные gif'ы перестают быть анимированными, т.е. представляют собой обычное изображение. Какой функцией воспользоваться или как усовершенствовать эту, чтобы анимация не пропадала после обработки?
Заранее спасибо!
|