PHP: imagecolorallocatealpha - Manual
(PHP 4 >= 4.3.2, PHP 5, PHP 7, PHP 8)
imagecolorallocatealpha — Allocate a color for an image
Description
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
0and127.0indicates completely opaque while127indicates 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 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:
See Also
- imagecolorallocate() - Allocate a color for an image
- imagecolordeallocate() - De-allocate a color for an image
Found A Problem?
20 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)10 years ago
When working with transparency, avoid imagecreate() and use imagecreatetruecolor() instead. Transparency effects may not work as expected within a palette-based image.18 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);
?>