imagecolorallocatealpha

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

imagecolorallocatealphaAllocate a color for an image

Descrierea

imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha ) : int

imagecolorallocatealpha() behaves identically to imagecolorallocate() with the addition of the transparency parameter alpha.

Parametri

image

O resursă - imagine, întoarsă de una din funcțiile de creare a imaginilor, cum ar fi imagecreatetruecolor().

red

Valoarea componentei roșii.

green

Valoarea componentei verzi.

blue

Valoarea componentei albastre.

alpha

A value between 0 and 127. 0 indicates completely opaque while 127 indicates completely transparent.

The red, green and blue parameters are integers between 0 and 255 or hexadecimals between 0x00 and 0xFF.

Valorile întoarse

A color identifier or false if the allocation failed.

Avertizare

Această funcție poate întoarce valoarea Boolean false, dar poate de asemenea întoarce o valoare non-Boolean care evaluează în false. Vă rugăm să citiți secțiunea despre tipul Boolean pentru informații suplimentare. Utilizați operatorul === pentru a verifica valoarea întoarsă de această funcție.

Exemple

Example #1 Example of using imagecolorallocatealpha()

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

// something to get a white background with black border
$back imagecolorallocate($image255255255);
$border imagecolorallocate($image000);
imagefilledrectangle($image00$size 1$size 1$back);
imagerectangle($image00$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($image255255075);
$red    imagecolorallocatealpha($image2550075);
$blue   imagecolorallocatealpha($image0025575);

// 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);
?>

Exemplul de mai sus va afișa ceva similar cu:

Output of example : Example of using imagecolorallocatealpha()

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));
?>

Exemplul de mai sus va afișa:

int(127)
int(0)

A se vedea și

add a note add a note

User Contributed Notes 3 notes

up
7
eric (at) junioronline.us
18 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
2
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
16 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