#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
});