imagefilltoborder

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

imagefilltoborderPreenche até encontrar uma cor especificada

Descrição

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

imagefilltoborder() realiza um preenchimento cuja cor de borda é definida por border_color. O ponto de início do preenchimento é x, y (canto superior esquero é 0, 0) e a região é preenchida com a cor informada em color.

Parâmetros

image

Um objeto GdImage, retornado por uma das funções de criação de imagem, como imagecreatetruecolor().

x

Coordenada x do início.

y

Coordenada y do início.

border_color

A cor da borda. Um identificador de cor criado com imagecolorallocate().

color

A cor de preenchimento. Um identificador de cor criado com imagecolorallocate().

Valor Retornado

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

Registro de Alterações

Versão Descrição
8.0.0 O parâmetro image agora espera uma instância de GdImage; anteriormente, um resource gd válido era esperado.

Exemplos

Exemplo #1 Preenchendo uma elipse com uma cor

<?php
// Cria a imagem, com fundo branco
$im = imagecreatetruecolor(100, 100);
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));

// Desenha uma elipse com borda preta para ser preenchida
imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));

// Define a borda e a cor de preenchimento
$border = imagecolorallocate($im, 0, 0, 0);
$fill = imagecolorallocate($im, 255, 0, 0);

// Preenche a seleção
imagefilltoborder($im, 50, 50, $border, $fill);

// Mostra e libera memória
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>

O exemplo acima produzirá algo semelhante a:

Saída do exemplo: Preenchendo uma elipse com uma cor

Notas

O algoritmo não se lembra explicitamente de quais pixels já foram definidos, mas infere isso a partir da cor do pixel, portanto ele não consegue distinguir entre pixels que acabaram de ser definidos de pixels que já estavam lá. Isto significa que ao escolher uma cor de preenchimento que já existe na imagem pode gerar resultados indesejados.

add a note add a note

User Contributed Notes 2 notes

up
2
edrad at wanadoo dot fr
21 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
20 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