#Redimensionado simple de imágenes
#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);
#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
#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)
#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
#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
#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
#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');
#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
#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
#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');
#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);