2010-11-11 8 views
8

Ho provato letteralmente tutto il giorno ieri a cercare di capirlo. Giro un'immagine via imagerotate(). Ottengo uno sfondo nero in cui l'immagine non copre più. Ho provato tutto quello che posso pensare di fare quel sfondo trasparente ..Perché non posso rendere lo sfondo di una png trasparente dopo averlo ruotato con php?

ecco il mio codice corrente ..

function rotate($degrees) { 
     $image = $this->image; 
     imagealphablending($image, false); 
     $color = imagecolorallocatealpha($image, 0, 0, 0, 127); 
     $rotate = imagerotate($image, $degrees, $color); 
     imagecolortransparent($rotate, $color); 
     imagesavealpha($image, true); 
     $this->image = $rotate; 
    } 

Sono davvero iniziando a fare tic tac fuori. Qualcuno può mostrarmi un codice funzionante? per favore?

Potrebbe essere qualcosa di sbagliato con il mio server WAMP e Dreamweaver? perché ho anche provato questo .. http://www.exorithm.com/algorithm/view/rotate_image_alpha e ancora mette fuori uno sfondo nero o bianco ..

+2

Sembra come un duplicato della domanda di ieri. http://stackoverflow.com/questions/4148774/how-do-i-get-a-transparent-background-after-rotaing-a-png-image-with-php/4148805 – stevelove

+0

e sì lo è. So che non avrei dovuto postare di nuovo ma non hai idea di quanto io voglia che questo codice funzioni solo ... – Chris

+0

Specifica la tua versione di PHP. – Rolf

risposta

1

Prova a impostare imagesavealpha() sull'immagine ruotata.

Attualmente stai utilizzando imagesavealpha() sull'immagine originale. [ per esempio. imagesavealpha ($ image, true); ]

invece si desidera eseguire imagesavealpha() sulla immagine ruotata e quindi impostare $ this-> immagine ... provate:

... 
    $rotate = imagerotate($image, $degrees, $color); 
    imagecolortransparent($rotate, $color); 
    imagesavealpha($rotate, true); // <- using $rotate instead of $image 
    $this->image = $rotate; 

}

Problemi correlati