Flood fill to specific color

# imagefilltoborder

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

imagefilltoborder — Flood fill to specific color

### Description

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

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`.

### Parameters

`image`

  A GdImage object, returned by one of the image creation functions, such as 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().

### Return Values

Always returns `true`.

### Changelog

Version | Description
--- | ---
8.0.0 | `image` expects a GdImage instance now; previously, a valid `gd` resource was expected.

### Examples

Example #1 Filling an ellipse with a color

`<?php
// Create the image handle, set the background to white
$im = imagecreatetruecolor(100, 100);
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));
// Draw an ellipse to fill with a black border
imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));
// Set the border and fill colors
$border = imagecolorallocate($im, 0, 0, 0);
$fill = imagecolorallocate($im, 255, 0, 0);
// Fill the selection
imagefilltoborder($im, 50, 50, $border, $fill);
// Output
header('Content-type: image/png');
imagepng($im);
?>`

The above example will output something similar to:

### Notes

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.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open