GifFrameExtractor is a PHP class that separates all the frames (and their duration) of an animated GIF
The class helps you to separate all the frames of an animated GIF, for example to watermark them and then to generate a new watermarked and animated GIF.
GifFrameExtractor is really easy to use:
1 - Extraction:
$gifFilePath = 'path/images/picture.gif';
if (GifFrameExtractor::isAnimatedGif($gifFilePath)) { // check this is an animated GIF
$gfe = new GifFrameExtractor();
$gfe->extract($gifFilePath);
// Do something with extracted frames ...
}
2 - Getting the frames and their duration:
foreach ($gfe->getFrames() as $frame) {
// The frame resource image var
$img = $frame['image'];
// The frame duration
$duration = $frame['duration'];
}
You can also get separately an array of images and an array of durations:
$frameImages = $gfe->getFrameImages();
$frameDurations = $gfe->getFrameDurations();
And obtain usefull informations:
$totalDuration = $gfe->getTotalDuration(); // Total duration of the animated GIF
$frameNumber = $gfe->getFrameNumber(); // Number of extracted frames
var_dump($gfe->getFrameDimensions()); // An array containing the dimension of each extracted frame
var_dump($gfe->getFramePositions()); // An array containing the original positions of each extracted frame inside the GIF
Option:
You can choose if you want to get the original frames (with transparency background) or frames pasted on the first one with the second parameter of extract() method:
$gfe->extract('path/images/picture.gif', true); // Can get transparency orignal frames
This option is false by default.
The class reuses some part of code of "PHP GIF Animation Resizer" by Taha PAKSU (thanks to him).