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 Instanciación

Instanciación

3.x 7 de mar. de 2026

#Leer imágenes

#Leer fuentes de imágenes

public ImageManager::read(mixed $input, string|array|DecoderInterface $decoders = []): ImageInterface

Con un Image Manager configurado es posible leer imágenes desde diferentes fuentes. El método no solo acepta rutas del sistema de archivos, sino también datos de imagen binarios, datos de imagen codificados en Base64 o imágenes en formato Data Uri. También es posible pasar una variedad de objetos y recursos de PHP como entrada. A continuación se muestra una lista completa.

#Parámetros

Nombre Tipo Descripción
input mixed Fuente de la imagen
decoders string, array or DecoderInterface Decodificador(es) para procesar los datos de entrada; por defecto el decodificador se detecta automáticamente

#Fuentes de imagen compatibles

Se aceptan los siguientes formatos del argumento input.

  • Ruta en el sistema de archivos
  • Datos de imagen sin procesar (binarios)
  • Datos de imagen codificados en Base64
  • Data Uri
  • Recurso de puntero de archivo
  • SplFileInfo del que derivan Illuminate\Http\UploadedFile y Symfony\Component\HttpFoundation\File\UploadedFile
  • Instancia de Intervention Image (Intervention\Image\Image)
  • Imagen Intervention codificada (Intervention\Image\EncodedImage)
  • Imagen específica del driver (instancia de GDImage o Imagick)

Para decodificar los datos de entrada, opcionalmente puede especificar una estrategia de decodificación con el segundo parámetro. Esto puede ser un array de nombres de clase u objetos de decodificadores que se procesarán en secuencia. En este caso, la entrada debe poder ser decodificada por uno de los decodificadores pasados. También es posible pasar un único objeto o nombre de clase de un decodificador.

Todos los decodificadores que implementen DecoderInterface::class pueden pasarse. Normalmente se trata de una selección de clases del namespace Intervention\Image\Decoders.

Si se omite el segundo parámetro, el driver intentará decodificar usando todos los decodificadores disponibles. Si el argumento proporcionado no puede ser decodificado por la biblioteca, se lanzará una excepción de tipo Intervention\Image\Exceptions\DecoderException.

#Ejemplo

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

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

// Leer imagen desde el sistema de archivos
$image = $manager->read('images/example.jpg');

// Leer imagen desde datos binarios
$image = $manager->read(file_get_contents('images/example.jpg'));
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Decoders\DataUriImageDecoder;
use Intervention\Image\Decoders\Base64ImageDecoder;
use Intervention\Image\Decoders\FilePathImageDecoder;

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

// Leer la imagen solo desde data URI o datos codificados en base64
$image = $manager->read($input, [
    DataUriImageDecoder::class,
    Base64ImageDecoder::class,
]);

// Leer la imagen solo desde una ruta de archivo
$image = $manager->read($input, FilePathImageDecoder::class);

// Lo mismo con un objeto en lugar del nombre de la clase
$image = $manager->read($input, new FilePathImageDecoder());

#Crear imágenes

#Crear nuevas imágenes

public ImageManager::create(int $width, int $height): ImageInterface

Leer fuentes de imagen existentes es una cosa, pero ¿y si desea crear sus propias imágenes? Intervention Image puede ayudarle con eso. Comience con una instancia de la clase Intervention\Image\ImageManager y llame al método create() con el tamaño de imagen deseado como argumentos. Vea el siguiente ejemplo:

Por defecto la imagen se crea con un fondo transparente. Si desea definir un color de fondo, utilice el método fill() después de la creación.

#Parámetros

Nombre Tipo Descripción
width integer Ancho de la imagen
height integer Altura de la imagen

#Ejemplo

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

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

// Crear nueva imagen 640x480
$image = $manager->create(640, 480);

// Crear nueva imagen 512x512 con fondo gris
$image = $manager->create(512, 512)->fill('ccc');

#Crear animaciones

public ImageManager::animate(callable $callback): ImageInterface

También es posible crear gráficos animados. Para ello, utilice la función "animate". A esta función se le pasa una función callback que determina la fuente y el tiempo de retardo de las imágenes individuales de la animación. Cabe señalar que la animación creada de esta manera se genera en un formato que soporta animaciones.

Las animaciones son posibles en todos los drivers proporcionados. Lea más sobre cómo modificar imágenes animadas.

#Parámetros

Nombre Tipo Descripción
callback callable Configuración de la animación

#Ejemplo

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

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

// Crear una imagen animada con tres fotogramas y un retraso de 250 ms para cada fotograma
$image = $manager->animate(function ($animation) {
    $animation->add('images/frame01.png', .25);
    $animation->add('images/frame02.png', .25);
    $animation->add('images/frame03.png', .25);
})->setLoops(4);
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;

// Crear nueva instancia de ImageManager con el driver deseado
$manager = new ImageManager(Driver::Class);

// Crear una animación circular de 5 fotogramas en bucle creando 
// sus propios fotogramas de animación mediante el método drawCircle
$animation = $manager->animate(function ($animation) use ($manager) {
    for ($i = 1; $i <= 5; $i++) {
        $animation->add(
            $manager->create(300, 300) // tamaño del fotograma
                ->fill('b53717') // color de fondo del fotograma
                ->drawCircle(150, 150, function ($circle) use ($i) {
                    $circle->radius(40 * $i); // radio del círculo en píxeles
                    $circle->border('fff', 5); // color y tamaño del borde
                }),
            .15 // retraso del fotograma
        );
    }
})->setLoops(10);