<?

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());

}

?>