PHP 8.5.0 Alpha 1 available for testing

imagecolorallocatealpha

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

imagecolorallocatealphaAsigna un color a una imagen

Descripción

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

imagecolorallocatealpha() se comporta como imagecolorallocate() con el parámetro adicional de transparencia alpha.

Parámetros

image

Un objeto GdImage, retornado por una de las funciones de creación de imágenes, como imagecreatetruecolor().

red

Value of red component.

green

Value of green component.

blue

Value of blue component.

alpha

Un valor entre 0 y 127. 0 indica opacidad completa mientras que 127 indica transparencia completa.

Los parámetros red, green y blue son enteros comprendidos entre 0 y 255, o hexadecimales comprendidos entre 0x00 y 0xFF.

Valores devueltos

Un identificador de color o false si la asignación falla.

Advertencia

Esta función puede retornar false, pero también puede retornar un valor equivalente a false. Por favor, lea la sección sobre los booleanos para más información. Utilice el operador === para probar el valor de retorno exacto de esta función.

Historial de cambios

Versión Descripción
8.0.0 image expects a GdImage instance now; previously, a valid gd resource was expected.

Ejemplos

Ejemplo #1 Ejemplo de uso de imagecolorallocatealpha()

<?php
$size
= 300;
$image=imagecreatetruecolor($size, $size);

// algo para obtener un fondo blanco con un borde negro
$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;

// asigna colores con valores alpha
$yellow = imagecolorallocatealpha($image, 255, 255, 0, 75);
$red = imagecolorallocatealpha($image, 255, 0, 0, 75);
$blue = imagecolorallocatealpha($image, 0, 0, 255, 75);

// Dibuja 3 elipses
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);

// No olvidar enviar un header correcto
header('Content-Type: image/png');

// y finalmente, mostrar el resultado
imagepng($image);
?>

Resultado del ejemplo anterior es similar a :

Salida del ejemplo: imagecolorallocatealpha()

Ejemplo #2 Conversión de valor alpha típico para usarlo con imagecolorallocatealpha()

Generalmente los valores alpha 0 designan los píxeles completamente transparentes, y el canal alpha tiene 8 bits. Para convertir tales valores alpha para ser compatibles con imagecolorallocatealpha(), un poco de aritmética simple es suficiente:

<?php
$alpha8
= 0; // completamente transparente
var_dump(127 - ($alpha8 >> 1));
$alpha8 = 255; // completamente opaco
var_dump(127 - ($alpha8 >> 1));
?>

El ejemplo anterior mostrará :

int(127)
int(0)

Ver también

add a note

User Contributed Notes 3 notes

up
6
eric (at) junioronline.us
19 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)
up
4
Brett G
9 years ago
When working with transparency, avoid imagecreate() and use imagecreatetruecolor() instead. Transparency effects may not work as expected within a palette-based image.
up
2
fjoggen at gmail dot com
17 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);
?>
To Top