Estamos actualizando el sitio. Durante unos días es posible que veas fallos de diseño o de traducción. La documentación sigue disponible: si una página se ve mal, recárgala más tarde.

Inicio image 3.x Animaciones

Animaciones

3.x 7 de mar. de 2026

Ambos controladores incluidos con Intervention Image admiten animación por defecto. Sin embargo, el controlador GD requiere recursos adicionales ya que no soporta la animación de forma nativa.

Si está cargando imágenes sin la intención de procesar la animación en absoluto, este proceso puede desactivarse previamente en la configuración del Gestor de Imágenes para ahorrar recursos.

#Crear animaciones

#Crear una animación a partir de diferentes fuentes

Más información sobre el proceso de creación de animaciones se puede encontrar en el capítulo sobre instanciación.

#Detectar animaciones

#Comprobar si la instancia de imagen actual está animada

public Image::isAnimated(): bool

Devuelve true si la imagen está animada. De lo contrario, false.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::class);

// verdadero
$result = $manager->read('images/animation.gif')->isAnimated();

#Editar animaciones

#Leer el número de fotogramas de la animación

public Image::count(): int

Lee el número de fotogramas de la animación. ImageInterface::class extiende Countable::class, por lo que también es posible usar el objeto de imagen con la función count().

#Ejemplo

use Intervention\Image\ImageManager;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = ImageManager::gd();

// leer un gif animado
$image = $manager->read('images/animation.gif');

// obtener el número de fotogramas de la animación
$count = $image->count();

// mismo resultado con la función count()
$count = count($image);

#Modificar los fotogramas de la animación

public Image::sliceAnimation(int $offset, null|int $length = null): ImageInterface

Extrae fotogramas de la animación según los valores indicados y descarta el resto. El parámetro offset puede usarse para establecer el punto de inicio de la nueva animación; todos los fotogramas anteriores al offset se descartarán. El parámetro length es opcional. Especifica cuántos fotogramas leer después del offset. Por defecto se leen todos los fotogramas hasta el final de la animación.

#Parámetros

Nombre Tipo Descripción
offset integer Punto de inicio de la nueva animación
length null o integer Fotogramas a leer después del offset (opcional)

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());

// leer un gif animado
$image = $manager->read('images/animation.gif');

// descartar los primeros 20 fotogramas y leer los 10 siguientes como nueva animación
$image = $image->sliceAnimation(20, 10);

#Leer el número de iteraciones de la animación

public Image::loops(): int

Lee el número de iteraciones de la imagen animada. 0 significa que la imagen se reproduce en bucle de forma continua.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());

// leer un gif animado
$image = $manager->read('images/animation.gif');

// obtener el número de iteraciones de la animación
$count = $image->loops();

#Cambiar el número de iteraciones de la animación

public Image::setLoops(int $count): ImageInterface

Cambie el número de iteraciones por las que debe repetirse la animación. Establezca 0 para que se reproduzca en bucle de forma continua.

#Parámetros

Nombre Tipo Descripción
count integer Número de iteraciones de la animación

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());

// leer un gif animado
$image = $manager->read('images/animation.gif');

// la animación debe ejecutarse solo una vez
$image = $image->setLoops(1);

#Eliminar la animación

public Image::removeAnimation(int|string $position = 0): ImageInterface

Convierte una imagen animada en una no animada descartando todos los fotogramas de la animación de la instancia de imagen actual, excepto el que se encuentra en la posición indicada.

La posición puede especificarse como un valor entero o como una cadena. Con un entero, se usa el número exacto de fotograma empezando en 0 como el fotograma restante. Los valores de cadena deben ser un valor porcentual entre 0% y 100% y el número de fotograma que queda se determina sólo de forma aproximada.

Si la posición se especifica como entero, el método lanza una excepción si el fotograma no existe. Esto no ocurre con valores porcentuales, ya que siempre se puede encontrar un fotograma.

#Parámetros

Nombre Tipo Descripción
position integer o string Posición del fotograma que quedará.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;

// crear una nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(new Driver());

// leer un gif animado
$image = $manager->read('images/animation.gif');

// convertir la animación en una imagen estática mostrando el fotograma en la posición 5
$image = $image->removeAnimation(5);

// hacer lo mismo eligiendo el fotograma en el 25% de la animación
$image = $image->removeAnimation('25%');