Visualizzazione dei risultati da 1 a 10 su 10

Discussione: unire 3 png

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    65

    unire 3 png

    Salve, vorrei unire 3 png mantenendo la trasparenza, il problema è che l'ultima immagine mi copre le altre 2.
    Ho cercato su questo forum e su internet...il problema è comune, ho visto che alcuni lo hanno risolto ma a me la loro soluzione non funzione...e non capisco perchè.
    per il momento il codice è questo:
    codice:
    $final_img = imagecreate(200,300); 
    $image_1 = imagecreatefrompng('img/1ap.png');
    $image_2 = imagecreatefrompng('img/1mp.png');
    $image_3 = imagecreatefrompng('img/1bp.png');
    imagealphablending($final_img,false);
    imagesavealpha($final_img,true);
    imagecopy($final_img, $image_1, 0, 0, 0, 0, 200, 300);
    imagecopy($final_img, $image_2, 0, 0, 0, 0, 200, 300);
    imagecopy($final_img, $image_3, 0, 0, 0, 0, 200, 300);
    imagepng($final_img, 'complete/small/111.png');
    Però non funziona.
    Qualcuno mi può aiutare.
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    uhm putroppo dovrei eseguire dei test per vedere come si comporta........
    non avendoVedo solo che le immaingi hanno la medesima dimensione e credo che la posizione del contenuto vari all'interno dell'immagine

    E' come unire 3 livelli in photoshop con le immagini nei livelli in pos diversa.... se non ho intuito male.... purtroppo non ho tempo da dedicare a questo test... ma partiamo da qui.

    La mia intuzione e' corretta ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    65
    hai preso in pieno il problema
    tutte hanno la stessa dimensione...e sono tutte png...hai detto bene...in pratica come unire 3 livelli in photoshop

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ottimo ,

    la prima e la seconda funzionano e la terza no mi pare di capire ....

    prova a fare alcuni test unendo le foto a 2 a 2 salva i file

    immagine_1_2 => facce sape se e' ok
    immagine_1_3 => facce sape se e' ok
    immagine_2_3 => facce sape se e' ok

    e vedi dove si presenta il prb.

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    65
    ho fatto delle prove comi mi avevi suggerito...ed il problema non è neanche la trasparenza...
    infatti..sia con due che con tre...l'immagine me la crea, è trasparente dove deve esserlo, però è uguale all'ultima immagine inserita.Cioè:
    immagine_1_2 =image_2
    immagine_1_3 =image_3
    immagine_2_3 =image_3

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    uhm ... capisco pare prendere e tenere solo l'ultima...


    http://www.php.net/manual/en/function.imagecopy.php

    bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )

    Copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a width of src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y.

    Controlla bene i parametri usati nella cpy.

    imagecopy($final_img, $image_1, 0, 0, 0, 0, 200, 300);

    Pare che non aggiorni correttamente l'immagine e quando fai il scondo copi non sovrapponga correttamente i livelli.

    Prova a fare cosi'

    1- nuova immagine x,y
    2- copia prima immagine
    3- salva in file temporaneo
    4- ricarica immagin da file temporaneo
    5- copiaci sopra immagine 2
    .. etc....

    alla fine restituisci il file temporaneo e rimuovilo se non ti serve piu.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    65
    Intanto grazie del tuo aiuto...ma ancora niente...
    i parametri passati sono corretti, però niente...sempre la seconda immagine...
    ho provato anche così:
    $image_1 = imagecreatefrompng('img/1ap.png');
    $image_2 = imagecreatefrompng('img/1mp.png');
    imagealphablending($image_1,false);
    imagesavealpha($image_1,true);
    imagecopy($image_1, $image_2, 0, 0, 0, 0, 200, 300);
    imagepng($image_1, 'complete/small/111.png');

    cioè copiare al seconda immagine sopra la prima...ma niente...mi da come risultato sempre la seconda immagine.

    Ho provato a fare anche cosi:
    imagecopy($image_1, $image_2, 0, 100, 0, 100, 200, 300);
    praticamente copiare una parte della seconda immagine e incollarla sopra alla prima.
    In questo modo la prima parte della prima immagine si vede.

    In pratica è come se la trasparenza venisse vista solo alla fine...e non in fase di merge delle immagini.

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    ok quindi prova a salvare a riaprire il file.


    Controllando da documentazione ho trovato questa funzione :

    Codice PHP:

    function CreateBlankPNG($w$h)
    {
        
    $im imagecreatetruecolor($w$h);
        
    imagesavealpha($imtrue);
        
    $transparent imagecolorallocatealpha($im000127);
        
    imagefill($im00$transparent);
        return 
    $im;

    Quindi 1 crea il png come da funzione

    .... poi copiaci sopra la prima imamgine salva il file
    riapri il file e copiaci sopra la sconda immagin
    salva -> chiudi ->riapri

    copia la terza e salva sul percorso finale.

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    65
    funziona!!!!
    Grazie 1000!!!

    posto il codice, in modo tale che se qualcuno ha il mio stesso problema magari può essergli d'aiuto.
    codice:
    $im = imagecreatetruecolor(200, 300); 
    imagesavealpha($im, true); 
    $transparent = imagecolorallocatealpha($im, 0, 0, 0, 127); 
    imagefill($im, 0, 0, $transparent);  
    $image_1 = imagecreatefrompng('img/1ap.png');
    $image_2 = imagecreatefrompng('img/1mp.png');
    $image_3 = imagecreatefrompng('img/1bp.png');
    imagecopy($im, $image_1, 0, 0, 0, 0, 200, 300);
    imagecopy($im, $image_2, 0, 0, 0, 0, 200, 300);
    imagecopy($im, $image_3, 0, 0, 0, 0, 200, 300);
    imagepng($im, 'complete/small/111.png');
    Grazie ancora

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    buenos vai così

    cosa buona a spaersi cmq

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.