batrox/gif-frame-extractor

PHP class that separates all the frames (and their duration) of an animated GIF

v1.0 2024-04-23 10:22 UTC

This package is auto-updated.

Last update: 2024-10-23 11:19:34 UTC


README

GifFrameExtractor

================================

GifFrameExtractor is a PHP class that separates all the frames (and their duration) of an animated GIF

For what ?

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.

Usage

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.

About

The class reuses some part of code of "PHP GIF Animation Resizer" by Taha PAKSU (thanks to him).