Visualizzazione risultati 1 fino 8 di 8

Discussione: Trasparenza immagine GD

  1. #1
    Guest

    Predefinito Trasparenza immagine GD

    Salve, dovrei creare un' immagine totalmente trasparente, quindi quando ci copierò delle cose sopra (sempre tramite GD e sono immagini quadrate e piene, quindi non hanno spazi bianchi in trasparenza) dovrebbe rimanere trasparente, ma non ci riesco.

    Ho usato il tasto cerca e ho trovato un thread su quest' argomento, ma nessuno ha aiutato l' utente fino alla fine.

    Ora sto utilizzando il codice:

    Codice PHP:
    $char = imagecreatetruecolor(128, 256);
    imagealphablending($char, false);
    imagesavealpha($char, true);
    $bg = imagecolorallocatealpha($char, 255, 255, 255, 127);
    imagefill($char, 0, 0, $bg);
    ma niente, anche togliendo imagefill o mettendo imagealphablending a true.

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    La porzione di codice che hai scritto è corretta, come continua?

  3. #3
    Guest

    Predefinito

    Vengono copiate le altre immagini su $char (come dicevo, sono rettangoli o quadrati pieni, quindi non hanno nulla in alpha da salvare)

    Codice PHP:
    imagecopy($char, $head, 32, 0, 0, 0, 64, 64);
    imagecopy($char, $body, 32, 64, 0, 0, 64, 96);
    imagecopy($char, $sx, 0, 64, 0, 0, 32, 96);
    imagecopy($char, $dx, 96, 64, 0, 0, 32, 96);
    imagecopy($char, $legs, 32, 160, 0, 0, 64, 96);
    e poi salvo l' immagine in png

    Codice PHP:
    imagepng($char, "char/$name.png");

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    E anche questo è corretto. Puoi indicare il codice per intero?

  5. #5
    Guest

    Predefinito

    Ti passo un archivio contenente il codice + l' immagine, almeno si capisce meglio (è praticamente un ritaglio): http://www.mediafire.com/?9ggc5jnwrqa703h

    L' immagine verrà salvata nella cartella "char", però non ha lo sfondo trasparente, lo ha bianco :S

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    L'immagine salvata ha lo sfondo trasparente, quella visualizzata richiamando lo script PHP no, poiché non hai usato la funzione imagesavealpha, dunque il canale per la trasparenza viene ignorato. Inoltre è inutile ricaricare l'immagine con le librerie GD solo per visualizzarla. Una volta che l'hai salvata su file puoi usare la funzione file_get_contents per leggere il file e mandarlo in uscita. Sarebbe ancora meglio non disturbare la memoria di massa, in quanto l'immagine è ancora in memoria e potresti fare a meno di andare nuovamente a leggerla. Infine, non dimenticare di usare imagedestroy per liberare la memoria!

  7. #7
    Guest

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    L'immagine salvata ha lo sfondo trasparente, quella visualizzata richiamando lo script PHP no, poiché non hai usato la funzione imagesavealpha, dunque il canale per la trasparenza viene ignorato. Inoltre è inutile ricaricare l'immagine con le librerie GD solo per visualizzarla. Una volta che l'hai salvata su file puoi usare la funzione file_get_contents per leggere il file e mandarlo in uscita. Sarebbe ancora meglio non disturbare la memoria di massa, in quanto l'immagine è ancora in memoria e potresti fare a meno di andare nuovamente a leggerla. Infine, non dimenticare di usare imagedestroy per liberare la memoria!
    Grazie, non ricordavo di dover usare imagesavealpha anche nel "richiamare".

    Di solito ho sempre usato imagedestroy, ma ora mi viene un dubbio.. Devo applicarla a $head, $body, $legs, $dx, $sx, poi anche a $char e $skin oppure no?

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    A tutte le risorse che non ti servono più. Una volta che hai eseguito l'ultima operazione con quell'immagine puoi immediatamente distruggerla, oppure puoi farlo comodamente a fine della funzione (prima del return, ovviamente) o del programma.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •