(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
imagecolorallocatealpha — Allocate a color for an image
imagecolorallocatealpha() behaves identically to
imagecolorallocate() with the addition of the transparency
parameter alpha.
imageA GdImage object, returned by one of the image creation functions, such as imagecreatetruecolor() .
redValue of red component.
greenValue of green component.
blueValue of blue component.
alpha
A value between 0 and 127.
0 indicates completely opaque while
127 indicates completely transparent.
red, green
and blue parameters are integers
between 0 and 255 or hexadecimals between 0x00 and 0xFF.
A color identifier or false if the allocation failed.
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.
| Version | Description |
|---|---|
| 8.0.0 |
image expects a GdImage
instance now; previously, a valid gd resource was expected.
|
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 circle
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);
// don't forget to output a correct header!
header('Content-Type: image/png');
// and finally, output the result
imagepng($image);
?>The above example will output something similar to:
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 transparent
var_dump(127 - ($alpha8 >> 1));
$alpha8 = 255; // fully opaque
var_dump(127 - ($alpha8 >> 1));
?>The above example will output:
int(127) int(0)
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)When working with transparency, avoid imagecreate() and use imagecreatetruecolor() instead. Transparency effects may not work as expected within a palette-based image.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);
?>