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

一个介于 0127 之间的数值。 0 表示完全不透明,而 127 表示完全透明。

redgreenblue 参数是 0 到 255 之间的整数或 0x00 到 0xFF 之间的十六进制数。

返回值

一个颜色标识符或 false,如果分配失败。

警告

此函数可能会返回布尔值 false,但也可能会返回一个非布尔值,该值评估为 false。有关更多信息,请阅读有关 布尔值 的部分。使用 === 运算符 来测试此函数的返回值。

变更日志

版本 描述
8.0.0 image 现在期望一个 GdImage 实例;以前,期望的是一个有效的 gd 资源

示例

示例 #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;

// 使用 alpha 值分配颜色
$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);
imagedestroy($image);
?>

上面的示例将输出类似于

Output of example : Example of using imagecolorallocatealpha()

示例 #2 转换典型的 alpha 值以供 imagecolorallocatealpha() 使用

通常,alpha 值为 0 表示完全透明的像素,alpha 通道有 8 位。要将此类 alpha 值转换为与 imagecolorallocatealpha() 兼容,只需进行一些简单的算术运算即可

<?php
$alpha8
= 0; // 完全透明
var_dump(127 - ($alpha8 >> 1));
$alpha8 = 255; // 完全不透明
var_dump(127 - ($alpha8 >> 1));
?>

上面的示例将输出

int(127)
int(0)

参见

添加注释

用户贡献的注释 3 个注释

eric (at) junioronline.us
18 年前
如果您只想提取颜色的 alpha 值,您可以像这样简单地提取它

<?php

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

?>

它实际上移除了前 24 位(其中 8x3 用于每种颜色),并返回剩余的 7 个分配位(通常用于 alpha)
Brett G
8 年前
在使用透明度时,避免使用 imagecreate() 并使用 imagecreatetruecolor() 代替。透明度效果可能不会在基于调色板的图像中按预期工作。
fjoggen at gmail dot com
16 年前
如果您需要计算具有 alpha 通道的颜色的整数表示,而无需初始化图像并使用 imagecolorallocatealpha 函数。那么这个函数可能会有所帮助

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

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