Ho due file PNG, "red.png" e "blue.png"; sono entrambi per lo più trasparenti, ma in alcuni punti vi sono alcuni pixel di macchie rosse o blu.PHP + GD: imagecopymerge che non conserva i lucidi PNG
Voglio fare uno script PHP che unisce i due; dovrebbe essere semplice come qualcosa di simile 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);
Quando ho eseguito questo script, tutto quello che ottiene è i punti blu - con la trasparenza perduta. Ho visto che dovrei aggiungere questi:
imagealphablending($original, false);
imagesavealpha($original, true);
(sia l'originale e la sovrapposizione?) E che non sembra aiutare qualsiasi.
ho visto un paio di soluzioni alternative sul PHP.net, qualcosa per la somma di:
$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));
, che dovrebbe convertire il PNG per un'immagine "TrueColor" e mantenere la trasparenza. Sembra che lo faccia, ma ora tutto quello che vedo è blu su sfondo nero.
Cosa devo fare ?!
Completamente funzionante. Molte grazie! Dovevo ancora usare imagealphablending e imagesavealpha. –