imagecolorallocatealpha

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

imagecolorallocatealphaAllocate a color for an image

Description

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

imagecolorallocatealpha() behaves identically to imagecolorallocate() with the addition of the transparency parameter alpha.

Parameters

image

A GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor().

red

Value of red component.

green

Value of green component.

blue

Value of blue component.

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The red, green and blue parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

Return Values

A color identifier or false if the allocation failed.

Warning

This function may return Boolean false, but may also return a non-Boolean value which evaluates to false. Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

Changelog

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

Examples

Example #1 Example of using imagecolorallocatealpha()

<?php$size = 300;$image=imagecreatetruecolor($size, $size);// something to get a white background with black border$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;// allocate colors with alpha values$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);$red    = imagecolorallocatealpha($image, 255, 0, 0, 75);$blue   = imagecolorallocatealpha($image, 0, 0, 255, 75);// drawing 3 overlapped circleimagefilledellipse($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);// don't forget to output a correct header!header('Content-Type: image/png');// and finally, output the resultimagepng($image);imagedestroy($image);?>

The above example will output something similar to:

Output of example : Example of using imagecolorallocatealpha()

Example #2 Convert typical alpha values for use with imagecolorallocatealpha()

Usually alpha values of 0 designate fully transparent pixels, and the alpha channel has 8 bits. To convert such alpha values to be compatible with imagecolorallocatealpha(), some simple arithmetic is sufficient:

<?php$alpha8 = 0; // fully transparentvar_dump(127 - ($alpha8 >> 1));$alpha8 = 255; // fully opaquevar_dump(127 - ($alpha8 >> 1));?>

The above example will output:

int(127)
int(0)

See Also