imagefilltoborder

(PHP 4, PHP 5, PHP 7, PHP 8)

imagefilltoborderRellena una región con un color específico

Descripción

imagefilltoborder(
    GdImage $image,
    int $x,
    int $y,
    int $border_color,
    int $color
): bool

imagefilltoborder() rellena con el color color toda la región dentro de la región limitada por el color border_color. El punto de partida es (x, y) (la esquina superior izquierda es el origen (0,0)) y el color de la región es color.

Parámetros

image

Un objeto GdImage, retornado por una de las funciones de creación de imágenes, como imagecreatetruecolor().

x

X: coordenada de inicio.

y

Y: coordenada de inicio.

border_color

El color del borde. Un identificador de color creado con imagecolorallocate().

color

El color de relleno. Un identificador de color creado con imagecolorallocate().

Valores devueltos

Esta función retorna true en caso de éxito o false si ocurre un error.

Historial de cambios

Versión Descripción
8.0.0 image ahora espera una instancia de GdImage; anteriormente, se esperaba un resource gd válido.

Ejemplos

Ejemplo #1 Relleno de una elipse con un color

<?php
// Creación de un gestor de imagen, luego define el color de fondo
// a blanco
$im = imagecreatetruecolor(100, 100);
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));

// Dibuja una elipse cuyos bordes serán negros
imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));

// Define el borde y rellena la elipse del color elegido
$border = imagecolorallocate($im, 0, 0, 0);
$fill = imagecolorallocate($im, 255, 0, 0);

// Rellena la selección
imagefilltoborder($im, 50, 50, $border, $fill);

// Visualización y liberación de la memoria
header('Content-type: image/png');
imagepng($im);
?>

Resultado del ejemplo anterior es similar a:

Visualización del ejemplo: imagefilltoborder()

Notas

El algoritmo no recuerda explícitamente qué píxeles ya han sido definidos, sino que lo infiere a partir del color del píxel, por lo que no puede distinguir entre un píxel que acaba de ser definido y un píxel que ya estaba presente. Esto significa que elegir cualquier color de relleno que ya esté presente en la imagen puede producir resultados no deseados.

add a note

User Contributed Notes 2 notes

up
1
edrad at wanadoo dot fr
22 years ago
Very useful to build a pseudo-sphere with a color gradient...

<?php
 $width = 300;
 $center = $width / 2;
 $colordivs = 255 / $center;
 $im = @imagecreate($width, $width);
 $back_color = imagecolorallocate($im, 20, 30, 40);
 imagefill($im, 0, 0, $back_color); 
 for ($i = 0; $i <= $center; $i++)
 {
     $diametre = $width - 2 * $i;
    $el_color = imagecolorallocate($im, $i * $colordivs, 0, 0);
    imagearc($im, $center, $center, $diametre, $diametre, 0, 360, $el_color);
    imagefilltoborder($im, $center, $center, $el_color, $el_color);
 }
 imagepng($im);
?>

Dark Skull Software
http://www.darkskull.net
up
0
admin at worldlanguages dot tk
21 years ago
In the example below, for those with newer GD versions, it makes more sense to replace:

imagearc($im, $center, $center, $diametre, $diametre, 0, 360, $el_color);

with:

imageellipse($im, $center, $center, $diametre, $diametre, $el_color);

This is obviously simpler.
To Top