<?




function gif_resize($string,$x,$y)




{




global $sess;




include_once H.'sys/inc/gifdecoder.php';




include_once H.'sys/inc/gifencoder.php';




$giff = new GIFDecoder ( $string );




$arr = $giff->GIFGetFrames ( ); // разрезание gif анимации на отдельные картинки




$dly = $giff->GIFGetDelays ( );




$imgs=imagecreatefromstring($string);




$img_x=imagesx($imgs);




$img_y=imagesy($imgs);




if ($img_x==$img_y)




{




$dstW=$x; // ширина




$dstH=$y; // высота




}




elseif ($img_x>$img_y)




{




$prop=$img_x/$img_y;




$dstW=$x;




$dstH=ceil($dstW/$prop);




}




else




{




$prop=$img_y/$img_x;




$dstH=$y;




$dstW=ceil($dstH/$prop);




}









for ($i=0;$i<count($arr);$i++)




{




$frames[]=H."sys/tmp/frame_$sess.$i.gif";




file_put_contents(H."sys/tmp/frame_$sess.$i.gif", $arr[$i]);




@chmod(H."sys/tmp/frame_$sess.$i.gif",0777);




}









for ($i=0;$i<count($arr);$i++)




{




$imgc[$i]=imagecreatefromgif(H."sys/tmp/frame_$sess.$i.gif");




$frame_img[$i]=imagecreatetruecolor($dstW, $dstH);




imagecopyresampled($frame_img[$i], $imgc[$i], 0, 0, 0, 0, $dstW, $dstH, $img_x, $img_y);




imagedestroy($imgc[$i]);




imagegif($frame_img[$i],H."sys/tmp/frame_$sess.$i.gif");




//@chmod(H."sys/tmp/frame_$sess.$i.gif",0777);




imagedestroy($frame_img[$i]);




}









$gif = @new GIFEncoder	($frames,$dly,0,2,0, 0, 0,"url");



















for ($i=0;$i<count($arr);$i++)




{




unlink(H."sys/tmp/frame_$sess.$i.gif");




}









return ($gif->GetAnimation());




}




?>