imagecolorallocatealpha

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

imagecolorallocatealphaAlloue une couleur à une image

Description

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

imagecolorallocatealpha() se comporte comme imagecolorallocate() avec en plus le paramètre de transparence alpha.

Liste de paramètres

image

Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().

red

Valeur du composant rouge.

green

Valeur du composant vert.

blue

Valeur du composant bleu.

alpha

Une valeur entre 0 et 127. 0 indique une opacité complète tandis que 127 indique une transparence complète.

Les paramètres red, green et blue sont des entiers compris entre 0 et 255, ou des hexadécimaux compris entre 0x00 et 0xFF.

Valeurs de retour

Un identifiant de couleur ou FALSE si l'allocation échoue.

Avertissement

Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE. Veuillez lire la section sur les booléens pour plus d'informations. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction.

Historique

Version Description
5.1.3 Retourne FALSE si l'allocation échoue. Précédemment, -1 était retourné.

Exemples

Exemple #1 Exemple d'utilisation de imagecolorallocatealpha()

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

// quelque chose pour obtenir un fond blanc avec une bordure noire
$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;

// alloue des couleurs avec des valeurs alpha
$yellow imagecolorallocatealpha($image255255075);
$red    imagecolorallocatealpha($image2550075);
$blue   imagecolorallocatealpha($image0025575);

// Dessine 3 ellipses
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);

// Ne pas oublier d'envoyer un header correct
header('Content-Type: image/png');

// et finallement, afficher le résultat
imagepng($image);
imagedestroy($image);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Sortie de l'exemple : imagecolorallocatealpha()

Exemple #2 Conversion de valeur alpha typique pour l'utiliser avec imagecolorallocatealpha()

Généralement les valeurs alpha 0 désignent les pixels complètement transparant, et le canal alpha a 8 bits. Pour convertir de telle valeurs alpha pour être compatible avec imagecolorallocatealpha(), un peu d'arithmetique simple est suffisante :

<?php
$alpha8 
0// fully transparent
var_dump(127 - ($alpha8 >> 1));
$alpha8 255// fully opaque
var_dump(127 - ($alpha8 >> 1));
?>

L'exemple ci-dessus va afficher :

int(127)
int(0)

Voir aussi

add a note add a note

User Contributed Notes 3 notes

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