Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    8

    PHP - GD2 - Inserimento di oggetti plurimi in immagine

    Ciao ragazzi e ragazze!

    Sto realizzando un sistema di "userbars", ho un piccolo problema: i template possono avere una o più immagini con uno o più testi. Il fatto è che se ci sono per dire più di due immagini, solo l'ultimo "oggetto" per tipo viene messo... per dire, se ci sono due scritte e tre immagini, verranno impresse soltanto la seconda scritta e la terza immagine sull'immagine "originale" di background.

    Per questo ho cercato di salvare ad ogni step l'immagine su di un file temporaneo e quindi di riutilizzarlo come background, ma evidentemente c'è qualcosa che non va, perché il risultato è immutato... potreste essere così gentili da dirmi cosa sbaglio?

    Grazie

    Codice PHP:
    /***********************************/
    // World of Warcraft Armory SDK    //
    // Userbars module                 //
    // Licence: GNU GPLv3              //
    // Author: Giacomo 'elegos' Furlan //
    // File: index.php                 //
    /***********************************/

        
    require_once("wowasdk/wowasdk.include.php");

        function 
    createImageFrom($imageUrl) {
            
    $info getimagesize($imageUrl);
            switch(
    $info["mime"]) {
                case 
    "image/gif":
                    return @
    imagecreatefromgif($imageUrl);
                case 
    "image/jpeg":
                    return @
    imagecreatefromjpeg($imageUrl);
                case 
    "image/png":
                    return @
    imagecreatefrompng($imageUrl);
                default:
                    die(
    "Impossible to create the image ($imageUrl).");
                    break;
            }
        }
        function 
    saveImage($image,$mime,$name="") {
            switch(
    $mime) {
                case 
    "image/gif":
                    if(
    $name == ""imagegif($image);
                    else 
    imagegif($image,$name);
                    break;
                case 
    "image/jpeg":
                    if(
    $name == ""imagejpeg($image);
                    else 
    imagejpeg($image,$name);
                    break;
                case 
    "image/png":
                    if(
    $name == ""imagepng($image);
                    else 
    imagepng($image,$name);
                    break;
            }
        }
        
        
    $get explode("_",$_GET['d']);
        
    $name $get[0];
        
    $region $get[1];
        
    $realm $get[2];
        
    $templ $_GET['t'];
        
    $i 0;
        do {
            
    $time = (string) time()-$i;
            
    $i++;
        } while(
    file_exists($time));
        
    $f fopen($time,'w');
        
    fputs($f,'\n');
        
    fclose($f);
        if(
    $templ == "" || !file_exists("templates/".$templ)) die("Not a valid template");
        
        switch(
    $region) {
            case 
    "EU":
                
    $region EU;
                break;
            case 
    "US":
                
    $region US;
                break;
            default:
                die(
    "No valid region selected. EU/US.");
        }
        
        require_once(
    "templates/".$templ.".php");
        if(!
    function_exists("template")) die("Function template() doesn't exist.");
        
        
    $template template($name$region$realm);
        
    $background "templates/".$templ."/".$template["vars"]["background"];
        
    $infoBase getimagesize($background);
        
    $image createImageFrom($background);

        foreach(
    $template["vars"] as $type => $data) {
            
    saveImage($image,$infoBase["mime"],$time); // qui provo a salvare l'immagine...
            
    imagedestroy($image);
            
    $image createImageFrom($time); // ... e quindi a ricaricarla
            
    switch($type) {
                case 
    "image":
                    
    $inner_image createImageFrom("templates/".$templ."/".$data["source"]);
                    if(!
    imagecopymerge($image,$inner_image,$data['x'],$data['y'],0,0,$data['width'],$data['height'],$data['opacity']))
                        die(
    "Unable to apply an image!");
                    break;
                case 
    "text":
                    
    $color imagecolorallocate($image,$data["color"]["red"],$data["color"]["green"],$data["color"]["blue"]);
                    
    imagettftext($image,$data["size"],0,$data["x"],$data["y"],$color,"templates/".$templ."/".$data["font"],html_entity_decode($data["content"]));
                    break;
            }
        }
            
        
    // image creation
        
    header("Content type: ".$infoBase["mime"]);
        
    saveImage($image,$infoBase["mime"]);
        
    imagedestroy($image);
        
        
    // delete temp image
        
    if(file_exists($time)) unlink($time); 

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    8
    Aiuto! nessuno?

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.