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 0No 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>