Ich habe zwei PNG-Dateien, "red.png" und "blue.png"; sie sind beide meist durchsichtig, aber an einigen Stellen gibt es einige Pixel mit roten oder blauen Flecken.PHP + GD: imagecopymerge nicht beibehalten PNG-Folien
Ich möchte ein PHP-Skript machen, das die beiden zusammenführt; es sollte so einfach wie so etwas wie:
$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);
Wenn ich dieses Skript ausführen, sehe ich nur die blauen Punkte - mit dem verlorenen Transparenz. Ich sah, dass ich diese hinzufügen soll:
imagealphablending($original, false);
imagesavealpha($original, true);
(sowohl auf das Original und die Overlay?) Und das scheint nicht zu helfen.
sah ich ein paar Workarounds auf PHP.net, etwas nach der Melodie:
$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));
, die die PNG auf ein „True Color“ Bild umwandeln soll und Transparenz beibehalten. Es scheint so zu sein, aber jetzt sehe ich nur noch Blau auf schwarzem Hintergrund.
Was mache ich ?!
Total funktioniert. Danke vielmals! Ich musste noch Imagealpblending und Imagesavealpha verwenden. –