(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
imagecolorallocatealpha — Создание цвета для изображения
imagecolorallocatealpha() работает аналогично функции
imagecolorallocate(), но ещё добавляет к цвету параметр
alpha
, отвечающий за прозрачность.
image
Объект GdImage, возвращаемый одной из функций создания изображений, например, такой как imagecreatetruecolor().
red
Значение красного компонента цвета.
green
Значение зелёного компонента цвета.
blue
Значение синего компонента цвета.
alpha
Значение в диапазоне от 0
до 127
.
0
означает непрозрачный цвет,
127
означает полную прозрачность.
red
, green
и blue
могут быть либо целочисленными в диапазоне от 0 до 255 либо
шестнадцатеричными в диапазоне от 0x00 до 0xFF.
Идентификатор цвета или false
в случае возникновении ошибки при создании цвета.
Эта функция может возвращать как логическое значение false
, так и значение не типа boolean, которое приводится к false
. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Версия | Описание |
---|---|
8.0.0 |
image теперь ожидает экземпляр GdImage;
ранее ожидался корректный gd ресурс (resource).
|
Пример #1 Пример использования imagecolorallocatealpha()
<?php
$size = 300;
$image=imagecreatetruecolor($size, $size);
// создадим белый фон с чёрной рамкой
$back = imagecolorallocate($image, 255, 255, 255);
$border = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, $size - 1, $size - 1, $back);
imagerectangle($image, 0, 0, $size - 1, $size - 1, $border);
$yellow_x = 100;
$yellow_y = 75;
$red_x = 120;
$red_y = 165;
$blue_x = 187;
$blue_y = 125;
$radius = 150;
// создание цветов с альфа компонентом
$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);
// рисование 3-х пересекающихся окружностей
imagefilledellipse($image, $yellow_x, $yellow_y, $radius, $radius, $yellow);
imagefilledellipse($image, $red_x, $red_y, $radius, $radius, $red);
imagefilledellipse($image, $blue_x, $blue_y, $radius, $radius, $blue);
// не забудьте вывести правильный заголовок!
header('Content-Type: image/png');
// и наконец, вывод
imagepng($image);
imagedestroy($image);
?>
Результатом выполнения данного примера будет что-то подобное:
Пример #2 Преобразование типичных альфа-значений для использования с imagecolorallocatealpha()
Обычно альфа-значения 0
обозначают полностью прозрачные пиксели,
а альфа-канал имеет 8 битов. Чтобы преобразовать такие альфа-значения для совместимости
с imagecolorallocatealpha(), достаточно немного простой
арифметики:
<?php
$alpha8 = 0; // полностью прозрачный
var_dump(127 - ($alpha8 >> 1));
$alpha8 = 255; // полностью непрозрачный
var_dump(127 - ($alpha8 >> 1));
?>
Результат выполнения данного примера:
int(127) int(0)