imagecolorallocatealpha()
(PHP 4 >= 4.3.2, PHP 5, PHP 7)
为一幅图像分配颜色+ alpha
说明
imagecolorallocatealpha(resource $image,int $red,int $green,int $blue,int $alpha): int
imagecolorallocatealpha()的行为和imagecolorallocate()相同,但多了一个额外的透明度参数$alpha,其值从0到127。0表示完全不透明,127表示完全透明。
如果分配失败则返回FALSE
。
使用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; // 用 alpha 值分配一些颜色 $yellow = imagecolorallocatealpha($image, 255, 255, 0, 75); $red = imagecolorallocatealpha($image, 255, 0, 0, 75); $blue = imagecolorallocatealpha($image, 0, 0, 255, 75); // 画三个交迭的圆 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! header('Content-type: image/png'); // 最后输出结果 imagepng($image); imagedestroy($image); ?>
Note:此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。
参见imagecolorallocate()和imagecolordeallocate()。
参数
- $image
由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
- $red
红色成分的值。
- $green
绿色成分的值。
- $blue
蓝色成分的值。
- $alpha
A value between0and127.0indicates completely opaque while127indicates completely transparent.
返回值
A color identifier or FALSE
if the allocation failed.
Warning此函数可能返回布尔值
FALSE
,但也可能返回等同于FALSE
的非布尔值。请阅读布尔类型章节以获取更多信息。应使用===运算符来测试此函数的返回值。
更新日志
版本 | 说明 |
---|---|
Prior to 5.1.3 | Returns -1 if the allocation failed. |
范例
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); imagedestroy($image); ?>
以上例程的输出类似于:
注释
Note:此函数需要 GD 2.0.1 或更高版本(推荐 2.0.28 及更高版本)。
参见
imagecolorallocate()
为一幅图像分配颜色imagecolordeallocate()
取消图像颜色的分配
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)
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); ?>
When working with transparency, avoid imagecreate() and use imagecreatetruecolor() instead. Transparency effects may not work as expected within a palette-based image.