<?php
// carica l'immagine il cui fondo è da rendere trasparente
$ImmagineOpaca =
imagecreatefrompng("NomeFile1.png");
// dimensione dell'immagine
$ImmagineOpacaLarghezza =
imagesx($ImmagineOpaca);
$ImmagineOpacaAltezza =
imagesy($ImmagineOpaca);
// crea una nuova immagine delle stesse dimensioni, a questo punto è nera
$ImmagineNEW =
imagecreatetruecolor( $ImmagineOpacaLarghezza, $ImmagineOpacaAltezza );
imagesavealpha( $ImmagineNEW, true ); // prepara il salvataggio per il canale Alpha
// alloca il colore per la trasparenza
$CanaleALPHA =
imagecolorallocatealpha( $ImmagineNEW, 0, 0, 0, 127 );
// rende trasparente l'immagine colorandola con il canale Alpha valore 127
imagefill( $ImmagineNEW, 0, 0, $CanaleALPHA );
// legge il colore che dovrà divenire trasparente
// in questo esempio è il centro dell'immagine
$ColoreDaTrasparire =
imagecolorat( $ImmagineOpaca, $ImmagineOpacaAltezza/2, $ImmagineOpacaLarghezza/2);
// loop sull'immagine opaca
for($x = 0; $x < $ImmagineOpacaLarghezza; $x++) // scansiona larghezza
{
for( $y = 0; $y < $ImmagineOpacaAltezza; $y++ ) // scansiona altezza
$ColorePixelLetto =
imagecolorat( $ImmagineOpaca, $x, $y ); // legge il colore del pixel
if($ColoreDaTrasparire<>$ColorePixelLetto)// se colore letto è diverso da quello da fare trasparente
{
imagesetpixel( $ImmagineNEW, $x, $y, $ColorePixelLetto);} // scrive nella nuova immagine il pixel letto }}
imagepng($ImmagineNEW, 'NomeFile2.png');// salva
imagepng($ImmagineNEW); al browser
imagedestroy($ImmagineNEW);imagedestroy($ImmagineOpaca);// libera memoria
?>
Risultato: