J'ai deux fichiers PNG, "red.png" et "blue.png"; ils sont tous les deux transparents, mais il y a quelques pixels de taches rouges ou bleues à différents endroits. Je veux faire un script PHP qui fusionne les deux; il devrait être aussi simple que quelque chose comme:PHP + GD: imagecopymerge ne retient pas les transparents PNG
$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);
Quand je lance ce script, tout ce que je reçois est les points bleus - avec la transparence perdue. J'ai vu que je devrais ajouter ces:
imagealphablending($original, false);
imagesavealpha($original, true);
(sur l'original et la superposition?) Et cela ne semble pas aider tout.
J'ai vu quelques solutions de contournement sur PHP.net, quelque chose à la hauteur 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));
, qui devrait convertir le PNG à une image « TrueColor » et à maintenir la transparence. Cela semble le faire, mais maintenant tout ce que je vois est bleu sur un fond noir.
Qu'est-ce que je fais ?!
Totalement travaillé. Merci beaucoup! Je devais encore utiliser imagealphablending et imagesavealpha. –