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 Dibujo

Dibujo

3.x 7 de mar. de 2026

#Colores y píxeles

#Rellenar imágenes con color

public Image::fill(mixed $color, null|int $x = null, null|int $y = null): ImageInterface

Rellena la imagen actual con el color especificado. Opcionalmente, es posible indicar una posición desde la que debe comenzar el relleno de color. Si se especifican estos valores X y Y, el color se aplicará mediante un relleno por inundación (flood fill). Esto significa que solo se rellenarán los colores que se encuentren en la posición indicada. Si no se pasa ninguna posición, se rellenará toda la imagen.

#Parámetros

Nombre Tipo Descripción
color mixed Color de relleno en uno de los diferentes formatos de color
x int Coordenada x opcional de la posición de relleno
y int Coordenada y opcional de la posición de relleno

#Ejemplo

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

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

// leer una imagen
$image = $manager->read('images/example.png');

// rellenar la imagen con color
$image = $image->fill('#b53717', 10, 10);

#Dibujar píxeles

public Image::drawPixel(int $x, int $y, mixed $color): ImageInterface

Dibuja un solo píxel en la posición especificada por las coordenadas x y y con el color indicado.

#Parámetros

Nombre Tipo Descripción
x integer Posición del píxel en el eje x de la imagen actual
y integer Posición del píxel en el eje y de la imagen actual
color mixed Color del píxel en un formato válido

#Ejemplo

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

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// dibujar tres píxeles en posiciones diferentes
$image->drawPixel(12, 30, 'ff00ff');
$image->drawPixel(100, 1, 'rgb(255, 255, 0)');
$image->drawPixel(200, 2, 'orange');

#Formas geométricas

#Dibujar un rectángulo

public Image::drawRectangle(int $x, int $y, Closure|Rectangle $init): ImageInterface

Dibuje un rectángulo coloreado en la imagen actual con su esquina superior izquierda en las coordenadas x, y. Defina la apariencia general de la figura pasando un callback init o un objeto Rectangle como tercer parámetro.

#Parámetros

Nombre Tipo Descripción
x integer Posición de la esquina superior izquierda del rectángulo en el eje x de la imagen actual
y integer Posición de la esquina superior izquierda del rectángulo en el eje y de la imagen actual
init Closure or Intervention\Image\Geometry\Rectangle Callback para definir la apariencia del rectángulo o un objeto Rectangle. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\RectangleFactory;

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// dibujar un rectángulo naranja con un borde
$image->drawRectangle(10, 10, function (RectangleFactory $rectangle) {
    $rectangle->size(180, 125); // ancho y alto del rectángulo
    $rectangle->background('orange'); // color de fondo del rectángulo
    $rectangle->border('white', 2); // color y grosor del borde del rectángulo
});

#Dibujar elipses

public Image::drawEllipse(int $x, int $y, Closure|Ellipse $init): ImageInterface

Dibuje una elipse coloreada en la imagen actual con su centro en las coordenadas x, y. Defina la apariencia general de la figura pasando un callback init o un objeto Ellipse como tercer parámetro.

#Parámetros

Nombre Tipo Descripción
x integer Posición del centro de la elipse en el eje x de la imagen actual
y integer Posición del centro de la elipse en el eje y de la imagen actual
init Closure or Intervention\Image\Geometry\Ellipse Callback para definir la apariencia de la elipse o un objeto Ellipse. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Geometry\Factories\EllipseFactory;

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// dibujar una elipse roja con un borde azul
$image->drawEllipse(10, 10, function (EllipseFactory $ellipse) {
    $ellipse->size(180, 125); // ancho y alto de la elipse
    $ellipse->background('f00'); // color de fondo
    $ellipse->border('00f', 1); // color y grosor del borde
});

#Dibujar un círculo

public Image::drawCircle(int $x, int $y, Closure|Circle $init): ImageInterface

Dibuje un círculo coloreado en la imagen actual con su centro en las coordenadas x, y. Defina la apariencia general de la figura pasando un callback init o un objeto Circle como tercer parámetro.

#Parámetros

Nombre Tipo Descripción
x integer Posición del centro del círculo en el eje x de la imagen actual
y integer Posición del centro del círculo en el eje y de la imagen actual
init Closure or Intervention\Image\Geometry\Circle Callback para definir la apariencia del círculo u objeto. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\CircleFactory;

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// dibujar un círculo verde con un borde blanco
$image->drawCircle(10, 10, function (CircleFactory $circle) {
    $circle->radius(150); // radio del círculo en píxeles
    $circle->background('lightblue'); // color de fondo
    $circle->border('b53717', 1); // color y grosor del borde
});

#Dibujar una línea

public Image::drawLine(Closure|Line $init): ImageInterface

Dibuje una línea en la imagen actual. Defina la apariencia general de la figura pasando un callback init o un objeto Line.

#Parámetros

Nombre Tipo Descripción
init Closure or Intervention\Image\Geometry\Line Callback para definir la apariencia de la línea o un objeto Line. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
use Intervention\Image\Geometry\Factories\LineFactory;

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(Driver::class);
$image = $manager->read('test.png');

// dibujar una línea blanca semi-transparente
$image->drawLine(function (LineFactory $line) {
    $line->from(10, 10); // punto de inicio de la línea
    $line->to(300, 100); // punto final
    $line->color('ff00ff'); // color de la línea
    $line->width(5); // ancho de la línea en píxeles
});

#Dibujar un polígono

public Image::drawPolygon(Closure|Polygon $init): ImageInterface

Dibuje un polígono en la imagen actual. Defina la apariencia general de la figura pasando un callback init o un objeto Polygon.

#Parámetros

Nombre Tipo Descripción
init Closure or Intervention\Image\Geometry\Polygon Callback para definir la apariencia del polígono o un objeto Polygon. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
use Intervention\Image\Geometry\Factories\PolygonFactory;

// crear una imagen de prueba desde un archivo
$manager = new ImageManager(new Driver());
$image = $manager->read('test.png');

// dibujar un polígono
$image->drawPolygon(function (PolygonFactory $polygon) {
    $polygon->point(10, 10); // añadir un punto del polígono
    $polygon->point(150, 150); // añadir un punto
    $polygon->point(40, 180); // añadir un punto
    $polygon->point(60, 100); // añadir un punto
    $polygon->background('#b35187'); // color de fondo
    $polygon->border('#ff0', 6); // color del borde y grosor del borde
});

#Dibujar curvas de Bézier

public Image::drawBezier(Closure|Bezier $init): ImageInterface

Este método dibuja curvas de Bézier, cuya forma se define por un conjunto de puntos de control especificados en el callback. El tipo de curva que se dibuja depende del número de puntos de control, que debe ser tres o cuatro. Con tres puntos de control, el resultado es una curva de Bézier cuadrática, mientras que con cuatro puntos el resultado es una curva de Bézier cúbica. El primer y el último punto de control definen los puntos de inicio y fin de la curva.

El color, el ancho y el color de fondo de la curva también se pueden establecer usando el callback.

#Parámetros

Nombre Tipo Descripción
init Closure or Intervention\Image\Geometry\Bezier Callback para definir la apariencia y posición de la curva de Bézier u objeto. Ver ejemplo.

#Ejemplo

use Intervention\Image\ImageManager;
use Intervention\Image\Geometry\Factories\BezierFactory;

// create a new image
$image = ImageManager::gd()
    ->create(500, 500)
    ->fill('666');

// draw a yellow quadratic bezier curve with a filled red background
$image->drawBezier(function (BezierFactory $bezier) {
    $bezier->point(300, 260); // punto de control 1
    $bezier->point(150, 335); // punto de control 2
    $bezier->point(300, 410); // punto de control 3
    $bezier->background('f00'); // color de fondo
    $bezier->border('ff0'); // color del borde
});

// draw a 4px red cubic bezier curve with four control points
$image->drawBezier(function (BezierFactory $bezier) {
    $bezier->point(50, 50); // punto de control 1
    $bezier->point(200, 50); // punto de control 2
    $bezier->point(150, 200); // punto de control 3
    $bezier->point(300, 200); // punto de control 4
    $bezier->border('ff0000', 4); // color y grosor del borde
});