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 Redimensionar imágenes

Redimensionar imágenes

3.x 7 de mar. de 2026

#Redimensionado simple de imágenes

Pruébelo en la demo en vivo

#Redimensionar una imagen

public Image::resize(null|int $width = null, null|int $height = null): ImageInterface

El método resize() simplemente estira la imagen hasta el tamaño deseado sin tener en cuenta la relación de aspecto original. Use resizeDown() para cambiar el tamaño pero sin superar el tamaño original de la imagen. El método admite argumentos con nombre para modificar únicamente un eje.

#Parámetros

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

#Ejemplo

use Intervention\Image\ImageManager;

// crear nueva instancia de imagen
$image = ImageManager::imagick()->read('images/example.jpg');

// redimensionar a 300 x 200 píxeles
$image->resize(300, 200);

// redimensionar solo la altura de la imagen a 200 píxeles
$image->resize(height: 200);

Pruébelo en la demo en vivo

#Redimensionar sin exceder el tamaño original

public Image::resizeDown(null|int $width = null, null|int $height = null): ImageInterface

El método resizeDown() hace lo mismo que resize(). Simplemente estira la imagen al tamaño especificado, pero no supera el tamaño original de la imagen. Puede usar argumentos con nombre para redimensionar solo un eje.

#Parámetros

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

#Ejemplo

use Intervention\Image\ImageManager;

// crear nueva instancia de imagen (800 x 600)
$image = ImageManager::imagick()->read('images/example.jpg');

$image = $image->resizeDown(2000, 100); // 800 x 100

// redimensionar solo el ancho de la imagen a 200 píxeles y no exceder el ancho original
$image->resizeDown(width: 200);

#Escalar imágenes

Pruébelo en la demo en vivo

#Redimensionar imágenes proporcionalmente

public Image::scale(null|int $width = null, null|int $height = null): ImageInterface

A menudo se desea redimensionar una imagen sin distorsionar la relación de aspecto original. Para este tipo de modificación puede usar simplemente los métodos scale() o scaleDown().

Tenga en cuenta que el tamaño resultante puede diferir de los argumentos proporcionados, ya que se preserva preferentemente la relación de aspecto.

#Parámetros

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

#Ejemplo

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

$manager = new ImageManager(new Driver());

// crear nueva instancia de imagen con 800 x 600 (4:3)
$image = $manager->read('images/example.jpg');

// escalar a altura fija
$image->scale(height: 300); // 400 x 300 (4:3)

// escalar a 120 x 100 píxeles
$image->scale(120, 100); // 120 x 90 (4:3)

Pruébelo en la demo en vivo

#Escalar imágenes sin exceder el tamaño original

public Image::scaleDown(null|int $width = null, null|int $height = null): ImageInterface

El método scale() redimensiona la imagen manteniendo la relación de aspecto original. scaleDown() es similar a scale(): la única diferencia es que no excede el tamaño original de la imagen. El método admite argumentos con nombre para apuntar únicamente a un eje en la modificación.

Tenga en cuenta que el tamaño del resultado puede diferir de los valores de los parámetros proporcionados.

#Parámetros

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

#Ejemplo

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

// crear nueva instancia de imagen
$manager = new ImageManager(Driver::class);
$image = $manager->read('images/example.jpg'); // 800 x 600

// escalar hacia abajo a ancho fijo
$image->scaleDown(width: 200); // 200 x 150

// escalar hacia abajo a altura fija
$image->scaleDown(height: 300); //  400 x 300

#Redimensionado ajustado

Pruébelo en la demo en vivo

#Recorte y redimensionado combinados

public Image::cover(int $width, int $height, string $position = 'center'): ImageInterface

El método cover() es una combinación en dos pasos de recorte y redimensionado para conseguir un tamaño de resultado determinado. Este método toma las dimensiones indicadas y las escala al mayor tamaño posible que coincida con la imagen original. Este tamaño se posiciona sobre la original y se recorta antes de redimensionarse al tamaño deseado indicado por los argumentos.

Este método requiere tanto los argumentos width como height. Opcionalmente puede especificar una posición para determinar qué parte de la imagen debe permanecer en foco.

#Parámetros

Nombre Tipo Descripción
width integer Ancho deseado de la imagen.
height integer Altura deseada de la imagen.
position (optional) string Posición

#Ejemplo

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

// crear nueva instancia de imagen (800 x 600)
$manager = new ImageManager(Driver::class);
$image = $manager->read('images/example.jpg');

// recortar con la relación 5:3 más ajustada (600x360) y redimensionar a 600x360 píxeles
$img->cover(600, 360);

// recortar con la relación 1:1 más ajustada (200x200) y redimensionar a 200x200 píxeles
$img->cover(200, 200);

// cubrir un tamaño de 300x300 y posicionar el recorte a la izquierda
$image->cover(300, 300, 'left'); // 300 x 300 px

Pruébelo en la demo en vivo

#Redimensionado ajustado sin exceder el tamaño original

public Image::coverDown(int $width, int $height, string $position = 'center'): ImageInterface

Este método tiene el mismo propósito y la misma firma que cover(), pero el tamaño final en píxeles nunca será mayor que la imagen original. Úselo si desea evitar el sobremuestreo de la imagen.

Tenga en cuenta que el tamaño del resultado puede diferir de los valores de los parámetros proporcionados.

#Parámetros

Nombre Tipo Descripción
width integer Ancho deseado de la imagen.
height integer Altura deseada de la imagen.
position (optional) string Posición

#Ejemplo

use Intervention\Image\ImageManager;

// crear nueva instancia de imagen
$image = ImageManager::imagick()->read('images/example.jpg'); // 800 x 600

// reducir hasta 1200x720 (5:3)
$img->coverDown(1200, 720); // 800 x 480 (5:3)

// reducir hasta 900x900 (1:1)
$img->coverDown(900, 900); // 600 x 600

// reducir hasta 900x450 (2:1) y posicionar a la izquierda
$image->coverDown(900, 450, 'left'); // 800 x 400 px

#Redimensionado con relleno

Pruébelo en la demo en vivo

#Redimensionado y relleno combinados

public Image::pad(int $width, int $height, $background = 'ffffff', string $position = 'center'): ImageInterface

El redimensionado con relleno significa que la imagen original se escala para ajustarse al tamaño objetivo definido sin cambiar la relación de aspecto. La imagen original no se amplía, solo se reduce.

En comparación con el método cover(), este método no crea áreas recortadas, sino que puede crear nuevas áreas vacías en los laterales de la imagen resultante. Estas se rellenarán con el color de fondo proporcionado.

#Parámetros

Nombre Tipo Descripción
width integer Ancho de la imagen.
height integer Altura de la imagen.
background (optional) mixed Color de fondo para las nuevas áreas de la imagen.
position (optional) string Posición donde se coloca la imagen original.

#Ejemplo

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

// crear nueva instancia de imagen
$manager = ImageManager::withDriver(new Driver());
$image = $manager->read('images/example.jpg');

// redimensionar con relleno a 300 x 200
$image->pad(300, 200, 'ccc');

// redimensionar con relleno y posicionamiento
$image->pad(500, 500, position: 'top-left');

Pruébelo en la demo en vivo

#Redimensionado con relleno y escalado ascendente

public Image::contain(int $width, int $height, $background = 'ffffff', string $position = 'center'): ImageInterface

Este método hace lo mismo que pad(), pero también amplía la imagen original si el tamaño objetivo supera el tamaño original.

#Parámetros

Nombre Tipo Descripción
width integer Ancho de la imagen.
height integer Altura de la imagen.
background (optional) mixed Color de fondo para las nuevas áreas de la imagen.
position (optional) string Posición donde se coloca la imagen original.

#Ejemplo

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

// crear nueva instancia de imagen (800 x 600)
$image = ImageManager::withDriver(Driver::class)->read('images/example.jpg');

// redimensionar con relleno sin ampliar
$image->contain(900, 600);

// redimensionar con relleno con color de fondo gris
$image->contain(500, 500, 'efefef');

#Recorte de imagen

Pruébelo en la demo en vivo

#Recortar una parte rectangular

public Image::crop(int $width, int $height, int $offset_x = 0, int $offset_y = 0, mixed $background = 'ffffff', string $position = 'top-left'): ImageInterface

Recorta un área rectangular de la imagen actual con un ancho y alto dados en una posición determinada. Pase opcionalmente coordenadas de desplazamiento x, y para mover el recorte la cantidad de píxeles especificada.

También puede especificar un color de fondo. Este color se usa para rellenar las áreas nuevas que puedan crearse, por ejemplo si el área recortada es más grande que el formato de la imagen original.

#Parámetros

Nombre Tipo Descripción
width integer Ancho del recorte rectangular
height integer Altura del recorte rectangular
offset_x (optional) int Número de píxeles que se moverá el recorte en el eje x
offset_y (optional) int Número de píxeles que se moverá el recorte en el eje y
background (optional) mixed Color para rellenar las áreas recién creadas
position (optional) string Posición con la que se alineará el recorte

Precaución: La firma cambió en la versión 3.3 por el parámetro adicional background

#Ejemplo

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

// crear nueva instancia de imagen
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');

// recortar un fragmento de 200 x 150 píxeles en la posición 45,90
$image->crop(200, 150, 45, 90);

// recortar un fragmento de 40 x 40 píxeles desde la esquina inferior derecha y moverlo 30 píxeles hacia abajo
$image->crop(200, 150, 0 , 30, position: 'bottom-right');

#Redimensionar el lienzo de la imagen

Pruébelo en la demo en vivo

#Redimensionar los límites de la imagen sin remuestrear la imagen original

public Image::resizeCanvas(null|int $width = null, null|int $height = null, mixed $background = 'ffffff', string $position = 'center'): ImageInterface

Esta función cambia el tamaño de los bordes de la imagen sin recalcular la imagen real. Si los tamaños especificados son mayores que los originales, se añade área de imagen con el color especificado. Si los tamaños especificados son menores, se recorta el área de la imagen original. Se tiene en cuenta la posición especificada y determina dónde se fija la imagen original.

#Parámetros

Nombre Tipo Descripción
width null or integer Ancho del nuevo área de la imagen
height null or integer Altura del nuevo área de la imagen
background (optional) mixed Color de fondo para las nuevas áreas de la imagen
position (optional) string Posición donde se fijará la imagen original

#Ejemplo

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

// crear nueva instancia de imagen
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');

// redimensionar el lienzo de la imagen a 800 x 600 y rellenar el área nueva con amarillo
$image->resizeCanvas(800, 600, 'ff0');

Pruébelo en la demo en vivo

#Redimensionar los límites de la imagen de forma relativa al original

public Image::resizeCanvasRelative(null|int $width = null, null|int $height = null, mixed $background = 'ffffff', string $position = 'center'): ImageInterface

Esta función se comporta de la misma manera que resizeCanvas(), pero aquí se especifican valores relativos que se añadirán (positivos) o se restarán (negativos) al tamaño original.

#Parámetros

Nombre Tipo Descripción
width null or integer Cantidad que se añadirá o restará al ancho original
height null or integer Cantidad que se añadirá o restará a la altura original
background (optional) mixed Color de fondo para las nuevas áreas de la imagen
position (optional) string Posición donde se fijará la imagen original

#Ejemplo

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

// crear nueva instancia de imagen
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');

// añadir 50 píxeles en verde a cada lado de la imagen
$image->resizeCanvas(50, 50, 'green');

// añadir 20 píxeles rojos a la altura en la parte inferior de la imagen
$image->resizeCanvas(height: 20, background: 'ff0000', position: 'bottom');

#Recortar bordes de la imagen

#Eliminar áreas de borde de color similar

public Image::trim(int $tolerance = 0): ImageInterface

Elimina las áreas de borde de la imagen en todos los lados que tengan un color similar. La similitud de color puede variarse usando el parámetro opcional tolerance.

Esto significa que con un valor de tolerancia de 0, solo se eliminarán las áreas de color con exactamente el mismo valor. Cuanto mayor sea la tolerancia, más áreas de color similares se incluirán. Normalmente, valores de hasta 20 son razonables.

Tenga en cuenta que los resultados pueden variar considerablemente según el driver y la imagen que esté procesando.

#Parámetros

Nombre Tipo Descripción
tolerancia integer Valor de tolerancia que determina cuán similar en color puede ser un área de borde para que se elimine.

#Ejemplo

use Intervention\Image\ImageManager;

// crear nueva instancia de imagen
$image = ImageManager::gd()->read('images/example.jpg');

// recortar con una tolerancia de 5
$image->trim(5);