Intervention GIF is a PHP encoder and decoder for the GIF image format that does not depend on any image processing extension.
Only the special Splitter::class
class divides the data stream of an animated
GIF into individual GDImage
objects for each frame and is therefore dependent
on the GD library.
The library is the main component of Intervention Image for processing animated GIF files with the GD library, but also works independently.
You can easily install this package using Composer. Just request the package with the following command:
composer require intervention/gif
use Intervention\Gif\Decoder;
// Decode filepath to Intervention\Gif\GifDataStream::class
$gif = Decoder::decode('images/animation.gif');
// Decoder can also handle binary content directly
$gif = Decoder::decode($contents);
Use the Builder class to create a new GIF image.
use Intervention\Gif\Builder;
// create new gif canvas
$gif = Builder::canvas(width: 32, height: 32);
// add animation frames to canvas
$delay = .25; // delay in seconds after next frame is displayed
$left = 0; // position offset (left)
$top = 0; // position offset (top)
// add animation frames with optional delay in seconds
// and optional position offset for each frame
$gif->addFrame('images/frame01.gif', $delay, $left, $top);
$gif->addFrame('images/frame02.gif', $delay, $left);
$gif->addFrame('images/frame03.gif', $delay);
$gif->addFrame('images/frame04.gif');
// set loop count; 0 for infinite looping
$gif->setLoops(12);
// encode
$data = $gif->encode();
- PHP >= 8.1
With this package comes a Docker image to build a test suite and analysis container. To build this container you have to have Docker installed on your system. You can run all tests with this command.
docker-compose run --rm --build tests
Run the static analyzer on the code base.
docker-compose run --rm --build analysis
This library is developed and maintained by Oliver Vogel
Thanks to the community of contributors who have helped to improve this project.
Intervention GIF is licensed under the MIT License.