PHP 8.1.0 Beta 1 available for testing

imagefilltoborder

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

imagefilltoborderFlood fill to specific color

Descrição

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

imagefilltoborder() performs a flood fill whose border color is defined by border_color. The starting point for the fill is x, y (top left is 0, 0) and the region is filled with color color.

Parâmetros

image

Um resource de imagem, retornado por funções de criação de imagens, como imagecreatetruecolor().

x

x-coordinate of start.

y

y-coordinate of start.

border_color

The border color. A color identifier created with imagecolorallocate().

color

The fill color. A color identifier created with imagecolorallocate().

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Changelog

Versão Descrição
8.0.0 image expects a GdImage instance now; previously, a resource was expected.

Exemplos

Exemplo #1 Filling an ellipse with a color

<?php
// Create the image handle, set the background to white
$im imagecreatetruecolor(100100);
imagefilledrectangle($im00100100imagecolorallocate($im255255255));

// Draw an ellipse to fill with a black border
imageellipse($im50505050imagecolorallocate($im000));

// Set the border and fill colors
$border imagecolorallocate($im000);
$fill imagecolorallocate($im25500);

// Fill the selection
imagefilltoborder($im5050$border$fill);

// Output and free memory
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

O exemplo acima irá imprimir algo similar à:

Output of example : Filling an ellipse with a color

Notas

The algorithm does not explicitly remember which pixels have already been set, but rather infers that from the color of the pixel, so it cannot distinguish between freshly set pixels and pixels that are already there. That means chosing any fill color that is already used in the image may yield undesired results.

add a note add a note

User Contributed Notes 2 notes

up
1
edrad at wanadoo dot fr
18 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
16 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