Intento obtener el alpha
de un PNG . Estoy haciendo esto con imagepng()
. Mi problema es que alpha
devuelve solo 0.
Mi código para hacer PNG con alfa
$x = 1; $y = 1; $gd = imagecreatetruecolor($x, $y); imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1)); imageAlphaBlending($gd, false); imageSaveAlpha($gd, true); imagepng($gd,"test.png"); imagedestroy($gd);
Mi código para leer PNG alfa
$im = imagecreatefrompng("test.png"); $rgb = imagecolorat($im, 0, 0); $colors = imagecolorsforindex($im, $rgb); $red = (int) $colors["red"]; $blue = (int) $colors["blue"]; $green = (int) $colors["green"]; $alpha = (int) $colors["alpha"]; // return only 0
No sé por qué devuelve solo 0 y no 1.
Debe llamar a imageAlphaBlending
e imageSaveAlpha
antes de llamar a imagesetpixel
:
imageAlphaBlending($gd, false); imageSaveAlpha($gd, true); imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1));
Franco,
Aquí está su solución con código
<!DOCTYPE html> <html lang="en"> <head> <title>Test</title> </head> <body> <a href="index.php" class="navbar-brand"> <?php $x = 1; $y = 1; $gd = imagecreatetruecolor($x, $y); imageAlphaBlending($gd, false); imageSaveAlpha($gd, true); imagesetpixel($gd, 0, 0, imagecolorallocatealpha($gd, 200, 200, 200, 1)); imagepng($gd, 'img/logo.png" '); imagedestroy($gd); $im = imagecreatefrompng('img/logo.png'); $rgb = imagecolorat($im, 0, 0); $colors = imagecolorsforindex($im, $rgb); $red = (int) $colors["red"]; $blue = (int) $colors["blue"]; $green = (int) $colors["green"]; echo $alpha = (int) $colors["alpha"]; // return only 0 ?> </a> </body> </html>