PHP 8.4.3 Released!

imagecolorallocatealpha

(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)

imagecolorallocatealphaСоздаёт цвет для изображения

Описание

imagecolorallocatealpha(
    GdImage $image,
    int $red,
    int $green,
    int $blue,
    int $alpha
): int|false

Функция imagecolorallocatealpha() работает аналогично функции imagecolorallocate(), но ещё добавляет к цвету параметр alpha, который отвечает за прозрачность.

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

image

Объект GdImage, который возвращает одна из функций, создающих изображения, например, imagecreatetruecolor().

red

Значение красного компонента цвета.

green

Значение зелёного компонента цвета.

blue

Значение синего компонента цвета.

alpha

Значение в диапазоне от 0 до 127. 0 означает непрозрачный цвет, 127 означает полную прозрачность.

Параметры red, green и blue принимают либо целочисленные значения в диапазоне от 0 до 255, либо шестнадцатеричные значения в диапазоне от 0x00 до 0xFF.

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

Функция возвращает идентификатор цвета или false, если при создании цвета возникла ошибка.

Внимание

Функция возвращает как логическое значение false, так и нелогическое значение, которое приводится к 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);

?>

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

Вывод примера: Пример использования imagecolorallocatealpha()

Пример #2 Преобразование типичных альфа-значений для использования с imagecolorallocatealpha()

Обычно альфа-значения 0 обозначают полностью прозрачные пиксели, а альфа-канал имеет 8 битов. Чтобы преобразовать такие альфа-значения для совместимости с imagecolorallocatealpha(), достаточно немного простой арифметики:

<?php

$alpha8
= 0; // На 100 % прозрачный
var_dump(127 - ($alpha8 >> 1));

$alpha8 = 255; // Непрозрачный
var_dump(127 - ($alpha8 >> 1));

?>

Результат выполнения приведённого примера:

int(127)
int(0)

Смотрите также

  • imagecolorallocate() - Создание цвета для изображения
  • imagecolordeallocate() - Разрыв ассоциации переменной с цветом для заданного изображения
Добавить

Примечания пользователей 3 notes

up
6
eric (at) junioronline.us
18 years ago
If you only wish to extract the alpha value for a color, you can simply extract it like so:

<?php

$color
= imagecolorat($im, 50, 50);
$alpha = $color >> 24;

?>

It actually shifts off the first 24 bits (where 8x3 are used for each color), and returns the remaining 7 allocated bits (commonly used for alpha)
up
3
Brett G
9 years ago
When working with transparency, avoid imagecreate() and use imagecreatetruecolor() instead. Transparency effects may not work as expected within a palette-based image.
up
2
fjoggen at gmail dot com
17 years ago
If you need to calculate the integer representation of a color with an alpha channel, without initialising an image and using the imagecolorallocatealpha function. Then this function might be of some help:

<?php
function alphaColor($hexColor,$alpha)
{
return
bindec(decbin($alpha).decbin(hexdec($hexColor));
}

echo
alphaColor("FFFFFF",127);
?>
To Top