Tengo dos archivos PNG, "red.png" y "blue.png"; ambos son en su mayoría transparentes, pero hay algunos píxeles de manchas rojas o azules en varios lugares.PHP + GD: imagecopymerge no conserva transparencias PNG
Quiero hacer un script PHP que combine los dos; debe ser tan simple como algo parecido a:
$original = getPNG('red.png');
$overlay = getPNG('blue.png');
imagecopymerge($original, $overlay, 0,0, 0,0, imagesx($original), imagesy($original), 100);
header('Content-Type: image/png');
imagepng($original);
Cuando ejecuto este script, lo único que consigue es los puntos azules - con la transparencia perdida. Vi que debo añadir siguientes:
imagealphablending($original, false);
imagesavealpha($original, true);
(tanto en el original como la superposición?) Y eso no parece ayudar a cualquier.
vi algunas soluciones en PHP.net, algo por una suma de:
$throwAway = imagecreatefrompng($filename);
imagealphablending($throwAway, false);
imagesavealpha($throwAway, true);
$dstImage = imagecreatetruecolor(imagesx($throwAway), imagesy($throwAway));
imagecopyresampled($dstImage, $throwAway,0,0,0,0, imagesx($throwAway), imagesy($throwAway), imagesx($throwAway), imagesy($throwAway));
, que debe convertir el PNG en una imagen de "color verdadero" y conservar la transparencia. Parece que sí, pero ahora todo lo que veo es azul sobre fondo negro.
¿Qué hago ?!
Totalmente trabajado. ¡Muchas gracias! Todavía tenía que usar imagealphablending e imagesavealpha. –