imagefilltoborder

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

imagefilltoborderЗаливает область изображения

Описание

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

Функция imagefilltoborder() заливает область изображения. Цвет границы области задаётся параметром border_color. Заливка начинается в точке с координатами x, y. Начало координат — левый верхний угол изображения. Область закрашивается цветом color.

Список параметров

image

Объект GdImage, который вернула функция imagecreatetruecolor() или другая функция генерации изображений.

x

Координата начала заливки по оси x.

y

Координата начала заливки по оси y.

border_color

Цвет границы заливки. Идентификатор цвета, который добавила в палитру изображения функция imagecolorallocate().

color

Цвет заливки. Идентификатор цвета, который добавила в палитру изображения функция imagecolorallocate().

Возвращаемые значения

Функция возвращает логическое значение true.

Список изменений

Версия Описание
8.0.0 Параметр image теперь принимает объект GdImage; раньше параметр принимал корректный gd-ресурс (resource).

Примеры

Пример #1 Пример заливки эллипса

<?php

// Создаём изображение и устанавливаем белый фон
$im = imagecreatetruecolor(100, 100);
imagefilledrectangle($im, 0, 0, 100, 100, imagecolorallocate($im, 255, 255, 255));

// Рисуем эллипс и заливаем чёрным цветом
imageellipse($im, 50, 50, 50, 50, imagecolorallocate($im, 0, 0, 0));

// Устанавливаем цвет границы заливки
$border = imagecolorallocate($im, 0, 0, 0);
$fill = imagecolorallocate($im, 255, 0, 0);

// Заливаем область
imagefilltoborder($im, 50, 50, $border, $fill);

// Устанавливаем заголовок с MIME-типом изображения и выводим результат
header('Content-type: image/png');
imagepng($im);

Вывод приведённого примера будет похож на:

Вывод примера: Эллипс с заливкой и цветной границей

Примечания

Алгоритм не запоминает, какие пиксели уже установил, а решение о заливке пикселя принимает на основе цвета пикселя. Поэтому при установке для заливки цвета, который уже содержится в изображении, функция иногда выдаёт нежелательный результат.

Добавить

Примечания пользователей 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