imagecolorallocatealpha

(PHP 4 >= 4.3.2, PHP 5)

imagecolorallocatealphaBir resim için alfa kanallı bir renk ayırır

Açıklama

int imagecolorallocatealpha ( resource $resim , int $kırmızı , int $yeşil , int $mavi , int $alfa )

imagecolorallocatealpha() işlevi alfa değiştirgesi ile ek olarak şeffaflık belirtilebilmesi dışında imagecolorallocate() işlevine eşdeğerdir.

Değiştirgeler

resim

imagecreatetruecolor() gibi bir resim oluşturma işlevinden dönen bir resim verisi.

kırmızı

Rengin kırmızı bileşeninin değeri.

yeşil

Rengin yeşil bileşeninin değeri.

mavi

Rengin mavi bileşeninin değeri.

alfa

0-127 arasında belirtilebilir. 0 tamamen mat, 127 ise tamamen şeffaf demektir.

Renk bileşenlerinin değerleri onluk tabanda 0-255 aralığında, onaltılık tabanda 0x00-0xFF aralığında belirtilebilir.

Dönen Değerler

Renk ayrılamazsa FALSE, aksi takdirde rengin indisini döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
5.1.3 öncesi Renk ayrılamazsa -1 döner.

Örnekler

Örnek 1 - imagecolorallocatealpha() örneği

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

// Siyah kenar çizgili beyaz artalan
$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;

// Renkleri alfa değerleriyle ayıralım
$yellow imagecolorallocatealpha($image255255075);
$red    imagecolorallocatealpha($image2550075);
$blue   imagecolorallocatealpha($image0025575);

// Üst üste üç elips çizelim
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);

// Başlığı çıktılamayı unutmuyoruz!
header('Content-type: image/png');

// ve sonucu çıktılıyoruz
imagepng($image);
imagedestroy($image);
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

imagecolorallocatealpha.png

Notlar

Bilginize: Bu işlev GD'nin 2.0.1 veya sonraki sürümlerini gerektirir (2.0.28 veya sonraki sürümler önerilir).

Ayrıca Bakınız

add a note add a note

User Contributed Notes 5 notes

up
2
hosh [underscore] 90 [at] live [dot] com
3 years ago
I have had a case where I got the alpha from a raw RGBA pallete. This was stored as 8bit where 0 is completely transparant, and 255 is complete opaque.
This is impossible to use with imagecolorallocatealpha() as it requires a 7bit int where 0 is completely opaque and 127 is completely transparant (otherway around)
You can solve this by subtracting 255, removing the negative sign (either by converting to string and substr($alpha, 1) or some other way) and then bitshifting the answer to the right by one 1 bit.

Example:
<?php
$alpha
= 0; // equivalent to alpha 127 needed for imagecolorallocatealpha()
$alpha = $alpha - 255; // subtract 255, this will give a negative number
$alpha = substr($alpha, 1); // remove negative/minus sign
$alpha = (int)$alpha; // convert back to integer
$alpha = $alpha >> 1; // bitshift to the right once.
echo $alpha; // output: 127

// This can be done in one line of course:
$alpha = 255; // equivalent to 0 for imagecolorallocatealpha()
$alpha = ((int)(substr($alpha - 255, 1))) >> 1;
echo
$alpha; // outputs 0
?>
up
2
eric (at) junioronline.us
8 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
0
Ben Zemm
2 years ago
"This was stored as 8bit where 0 is completely transparant, and 255 is complete opaque."

This would be a lot more efficient:

<?php
$alpha7
= ((~((int)$alpha8)) & 0xff) >> 1;
?>

where alpha8==255, alpha7==0
where alpha8=127, alpha7== 64
where alpha8==0, alpha7==127
up
0
fjoggen at gmail dot com
6 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
-1
fchristl at hotmail dot com
10 years ago
Check out this Source, it's a little funny feature showing you, for what imagecolorallocatealpha() is used:

<?php
$im
=imagecreatetruecolor(300,300);
$white=imagecolorallocate($im,255,255,255);
imagefilledrectangle($im,0,0,imagesx($im),imagesy($im),$white);
for(
$i=0;$i<256;$i=$i+10)
{
$col=imagecolorallocatealpha($im,$i,$i,$i,ceil(rand(0,127)));
imagefilledellipse($im,$i,$i,$i,$i,$col);
}
header("content-type: image/png");
imagepng($im);
?>
To Top