Visualizzazione dei risultati da 1 a 1 su 1
  1. #1

    [PHP] Librerie GD - Ellissi con trasparenza su sfondo

    Ciao a tutti!
    sono incappato oramai da settimane in questa porzione di codice:

    [SPOILER]
    codice:
    <?php
    
            $myImageZoom = imagecreatefromjpeg('sample.jpg');
            $img = imagecreatefromjpeg('back.jpg');
    
               $src_img = $myImageZoom;
               $src_w = imagesx($myImageZoom);
               $src_h = imagesy($myImageZoom);
               $dst_w = $src_w;
               $dst_h = $src_h;
    
               $dst_img = imagecreatetruecolor($dst_w, $dst_h);
               imagecopy($dst_img, $src_img, 0, 0, 0, 0, $dst_w, $dst_h);
    
                  $mask = $img;
               $maskTransparent = imagecolorallocate($mask, 255, 0, 255);
               imagecolortransparent($mask, $maskTransparent);
               imagefilledellipse($mask, $dst_w / 2, $dst_h / 2, $dst_w, $dst_h, $maskTransparent);
    
               imagecopymerge($dst_img, $mask, 0, 0, 0, 0, $dst_w, $dst_h, 100);
               $dstTransparent = imagecolorallocate($dst_img, 255, 0, 255);
               imagefill($dst_img, 0, 0, $dstTransparent);
               imagefill($dst_img, $dst_w - 1, 0, $dstTransparent);
               imagefill($dst_img, 0, $dst_h - 1, $dstTransparent);
               imagefill($dst_img, $dst_w - 1, $dst_h - 1, $dstTransparent);
               imagecolortransparent($dst_img, $dstTransparent);
    
    
            imagecopy($img, $dst_img, 20, 20, 0, 0, imagesx($dst_img), imagesy($dst_img));
    
            if(!imagepng($img, "imgfinale.png")) die('Salvataggio immagine fallito');
    
    ?>
    Read more at https://www.inforge.net/xi/threads/php-librerie-gd-imagefilledellipse-con-trasprenza.451126/#tIE0eYGfT6LzmcqQ.99
    [/SPOILER]

    Questo codice mi permette di trasformare un'immagine quadrata in forma rotonda, attraverso dei vari procedimenti trasformerà gli angoli rimossi in trasparenza.
    sample.jpg

    Successivamente provvederà a copiare la suddetta immagine in un'altra più grande
    Ebbene la trasparenza funziona per il lato destro ed il lato inferiore, non per gli altri.
    Mi spiego meglio: se l'immagine che andiamo a sovrapporre sarà posizionata in alto a sinistra (coordinate: 0, 0) sarà perfetta.
    Mentre se la si sposta anche soltanto di un pixel più al centro, i lati superiore e sinistro non vengono bene.
    http://i65.tinypic.com/fvzs3k.png


    Il codice l'ho preso spunto da un altro sito e sinceramente non so bene come funziona l'algoritmo.
    So che crea delle maschere, con dei colori, dopodiché va a eliminare questi colori negli angoli.
    Io credo che la maschera debba essere spostata degli stessi pixel della foto.

    Qualcuno può aiutarmi ?
    PS: il codice è molto disordinato con variabili inutili, non fateci caso.
    Immagini allegate Immagini allegate

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 © 2024 vBulletin Solutions, Inc. All rights reserved.