just creat 3 file name 1.frame_output 2.images 3.resized_frame_output and download 2 encoder and decoder classes from this link below 1.Download the class "GIFDecoder.class.php" from http://phpclasses.elib.com/browse/package /3234.html 2.Download the class "GIFEncoder.class.php" from http://phpclasses.betablue.net/browse/package/3163.html
and then run the script name as "resize_animator.php", create an html file to load and let the script enjoy.
.. Save this script as ..... index.php .......
<html> <body> <table width="500" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC"> <tr> <form action="resize_animator.php" method="post" enctype="multipart/form-data" > <td> <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF"> <tr> <td align="center"><font face="Tahoma">SELECT ANIMATED FILE</font> <input type="file" name="uploadfile" size="20" accept="image/gif"/> </td> </tr> <tr> <td align="center"><input type="submit" name="Submit" value="PROCESS ANIMATION" /></td> </tr> </table> </td> </form> </tr> </table> </body> </html>
........................ save this script as resize_animator.php ............
<?php require "GIFDecoder.class.php"; include "GIFEncoder.class.php"; $file_name= $_FILES['uploadfile']['name']; $file_ext = substr($file_name, -4); $file_size=($_FILES["uploadfile"]["size"] /1024 ); if($file_ext=='.gif') { if($file_size > 0 && $file_size < 2000 ) { session_start ( ); $uploaded_file = $_FILES['uploadfile']['tmp_name']; $fp=file_get_contents($uploaded_file); if ( $fp ) { $_SESSION['delays'] = Array ( ); $gif = new GIFDecoder ( $fp ); $arr = $gif->GIFGetFrames ( ); $_SESSION [ 'delays' ] = $gif -> GIFGetDelays ( ); for ( $i = 0; $i < count ( $arr ); $i++ ) { fwrite ( fopen ( ( $i < 10 ? "frame_output/$i$i_frame.gif" : "frame_output/$i_frame.gif" ), "wb" ), $arr [ $i ] ); } } function resize_frames($newwidth,$newheight) { $dir=opendir("frame_output/"); $i=0; while($imgfile=readdir($dir)) { if ($imgfile != "." && $imgfile!="..") { $imgarray[$i]=$imgfile; $uploadedfile = "frame_output/".$imgarray[$i]; $src = imagecreatefromgif($uploadedfile); list($width,$height)=getimagesize($uploadedfile); $tmp=imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); $filename = "resized_frame_output/".$imgarray[$i]; imagegif($tmp,$filename,100); imagedestroy($src); imagedestroy($tmp); $i++; } } closedir($dir); if ( $dh = opendir ( "resized_frame_output/" ) ) { while ( false !== ( $dat = readdir ( $dh ) ) ) { if ( $dat != "." && $dat != ".." ) { $frames [ ] = "resized_frame_output/$dat"; } } closedir ( $dh ); } $gif = new GIFEncoder ( $frames,$_SESSION [ 'delays' ],0, 2, 0, 0, 0,"url" ); $data = $gif->GetAnimation ( ); $x='x'; $y='_'; $uploaded_file_name= $_FILES['uploadfile']['name']; $actual_file_name = substr($uploaded_file_name, 0, -4); $file_extention = substr($uploaded_file_name, -4); $new_name=$actual_file_name.$y.$newwidth.$x.$newheight.$file_extention ; //$output_image_name=$newwidth.$x.$newheight; fwrite ( fopen ( "images/$new_name", "wb" ), $data ); //remove resized frames from folder //sleep for 1 second // usleep(2000000); $dir = 'resized_frame_output/'; foreach(glob($dir.'*.*') as $v) { unlink($v); } } // end of function resize_frames $gif = new GIFEncoder ( $frames,$_SESSION [ 'delays' ],0, 2, 0, 0, 0,"url" ); $data = $gif->GetAnimation ( ); $x='x'; $y='_'; $z='_p'; $uploaded_file_name= $_FILES['uploadfile']['name']; $actual_file_name = substr($uploaded_file_name, 0, -4); $file_extention = substr($uploaded_file_name, -4); $new_name=$actual_file_name.$y.$newwidth.$x.$newheight.$z.$file_extention ; //$output_image_name=$newwidth.$x.$newheight; fwrite ( fopen ( "images/$new_name", "wb" ), $data ); //remove resized frames from folder //sleep for 1 second //usleep(2000000); $dir = 'resized_frame_output/'; foreach(glob($dir.'*.*') as $v) { unlink($v); } } // end of function resize_frames resize_frames(110,110); resize_frames(120,160); resize_frames(120,80); resize_frames(128,96); resize_frames(128,128); resize_frames(208,208); resize_frames(208,320); session_destroy(); //usleep(200000); //remove resized frames from folder $dir = 'frame_output/'; foreach(glob($dir.'*.*') as $v) { unlink($v); } echo "<center><h1>Your Animation processing is compleated.</h1></center>"; echo "<center><h2><a href=\"index.php\">BACK TO UPLOAD PAGE</h2></center>"; } //end of file size checker else { echo "<center><h2>You Upload a unfit size image .Upload a file within 2000 KB</h2></center>"; echo "<center><h2><a href=\"index.php\">BACK TO UPLOAD PAGE</h2></center>"; } } //end of file extention checker else { echo "<center><h2>Uplaod a gif file!</h2></center>"; echo "<center><h2><a href=\"index.php\">BACK TO UPLOAD PAGE</h2></center>"; } ?>
....................... LETS ENJOY ............
uncomment the usleep function to see how the work happens in these folders. Not necessarily, but I use it to view functionality.