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

    Problema chiamata variabile[mysql] tramite GD

    Salve a tutti e grazie per l'eventuale risposta.
    Il mio è un problema che mi affligge ormai da tempo, per cui passo subito alla spiegazione di questo infortunio.

    Ho i seguenti files php denominati avatar.php,pagina.php e index.php
    Dove in avatar.php ho delle funzioni la quale stabiliscono un Output per la pagina.php, in pratica il file pagina.php è un'immagine composta in GD.
    (Dove in .htaccess ho una regola di Rewrite in immagine.jpg)

    -> Quindi nel file pagina.php chiamo le funzioni di avatar.php
    -> Nel file index.php ho [img]immagine.jpg[/img] dove però considerando il rewrite è come se fosse [img]pagina.php[/img]

    Il mio problema principale riguarda il file avatar.php, in pratica in questa parte di codice dove desidero salvare il file nella directory "upload" oltre che a fare l'output :

    codice:
    	function output()
    	{
    		// If the filename is set, save it to a file 
    		if(!empty($this->filename))
    		{
    			//notice that this function has the added $this->filename value (by setting this you are saving it to the hard drive)
    			imagejpeg($this->canvas, $this->filename,100); 
    		
    		//Otherwise output to the header
    		}else{
    			//before you can output to the header, you must tell the browser to interpret this document 
    			//as an image (specifically a jpeg image)
    
    			header("content-type: image/jpeg"); 
    
    
    
    			//Output, notice that I ommitted $this->filename
    			imagejpeg($this->canvas, "", 100);
    			imagejpeg($this->canvas, "upload/".$ir['username'].".jpg", 100); 
    
    
    		}
    		//Removes the image from the buffer and frees up memory
    		imagedestroy($this->canvas); 	
    	}
    In pratica funge solo se non utilizzo $ir['username'], quindi se utilizzo ad esempio questo :
    imagejpeg($this->canvas, "upload/newimage.jpg", 100);

    Il file avatar.php ovviamente richiama la funzione del select e per la connessione al database MySQL.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    prima di usare la variabile fai un dump a video del contenuto per verificarlo, come var_export("upload/".$ir['username'].".jpg");exit; e posta qui il risultato

  3. #3
    In pratica mi stampa "upload/.jpg" quindi il file senza attribuire il nome. Però se prova ad esportare la variabile a schermo fuori la classe $avatar della stessa pagina me lo stampa correttamente.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma $ir[...] in effetti non c'è nel codice...

  5. #5
    $ir è una variabile globale dove è assegnato il contenuto del campo username del database.
    Ti posto tutto il codice così da farti capire cosa intendo.
    La parte interessata è evidenziata in Blu, ciò che mi interessa è salvare il file utilizzando il campo username. Come ti ho detto se prendo quella parte di codice e provo a spostarla sopra la classe avatar, mi funge, cioè mi legge correttamente il campo username.

    File avatar.php con la classe "avatar"

    codice:
    <?php
    require_once "globals.php";
    
    class avatar
    {
    	var $filename; 				
    	var $width 	= 100; 			
    	var $height = 100;			
    	var $parts  = array(); 		
    	 
    
    	function set_width($width)
    	{
    		$this->width  = $width; 
    	}
    	
    	function set_filename($filename)
    	{
    		$this->filename = $filename; 
    	}
    		
    
    	function set_background($background)
    	{ 
    		$this->background_source = $background; 
    	}
    	
    	function add_layer($filename)
    	{
    		$this->parts[] = $filename; 
    	}
    
    	function build_background()
    	{
    		$first_image = $this->parts[0];
    
    		list($width, $height) = getimagesize($first_image);
    
    
    		$this->height = ($this->width/$width)*$height; 
    		$this->background = imagecreatetruecolor($this->width, $this->height);
    
    		if(substr_count($this->background_source, "#")>0)
    		{
    			$int = hexdec(str_replace("#", "", $this->background_source));
    			
    			$background_color = imagecolorallocate ($this->background, 0xFF & ($int >> 0x10), 0xFF & ($int >> 0x8), 0xFF & $int);
    
    			imagefill($this->background, 0,0,$background_color); 
    		
    		}else{
    
    			list($bg_w, $bg_h) = getimagesize($this->background_source); 
    
    			$img = imagecreatefrompng($this->background_source); 
    
    			imagecopyresampled($this->background, $img, 0,0,0,0,$this->width, $this->height, $bg_w, $bg_h); 
    		}
    	}
    
    	function build_composition()
    	{
    
    		$this->canvas = imagecreatetruecolor($this->width, $this->height); 
    
    		if($this->background)
    		{
    			imagecopyresampled($this->canvas, $this->background, 0,0,0,0,$this->width, $this->height, $this->width, $this->height); 
    		}
    
    		for($i=0; $i<count($this->parts); $i++)
    		{
    			list($part_w, $part_h) = getimagesize($this->parts[$i]); 
    
    			$body_part = imagecreatefrompng($this->parts[$i]); 
    			
    			imageAlphaBlending($body_part, true);
    			imageSaveAlpha($body_part, true);
    			imagecopyresampled($this->canvas, $body_part, 0,0,0,0,$this->width, $this->height, $part_w, $part_h);  
    		}
    	}
    
    	function output()
    	{
    		if(!empty($this->filename))
    		{
    			imagejpeg($this->canvas, $this->filename,100); 
    		}else{
    			srand ((double) microtime( )*1000000);
    			$namer = "upload/".$ir['username'].uniqid (rand (),true).".jpg";
    			header("content-type: image/jpeg"); 
    
    			imagejpeg($this->canvas, "", 100);
    			imagejpeg($this->canvas, $namer, 100);
    			
    		}
    		imagedestroy($this->canvas); 	
    	}
    
    	function build()
    	{
    		$this->build_background(); 
    		$this->build_composition(); 
    		$this->output(); 
    	}
    }
    ?>
    File pagina.php (l'output dell'immagine)

    codice:
    <?php 
    require_once "avatar.php";
    $q=$db->query("SELECT * FROM items WHERE itmid IN({$ir['equip_primo']}, {$ir['equip_secondo']}, {$ir['equip_terzo']}, {$ir['equip_quarto']}, {$ir['equip_quinto']}, {$ir['equip_sesto']}, {$ir['equip_settimo']}, {$ir['equip_ottavo']})");
    while($r=$db->fetch_row($q))
    {
    $equip[$r['itmid']]=$r;
    }
    
    $avatar = new avatar;
    $avatar->set_background("images/alpha.png");
    $avatar->set_width(600);
    	 
    // ######################################## CONDIZIONE 1  ##############################
    	
    if ($equip[$ir['equip_primo']]['itmid'])  {
    	
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_primo']]['itmpicint']);
    	$avatar->build();
    
    } else if ($equip[$ir['equip_secondo']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_secondo']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_terzo']]['itmid']) {
    	$avatar->add_layer("images/ bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_terzo']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_quarto']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_quarto']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_quinto']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_quinto']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_sesto']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_sesto']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_settimo']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_settimo']]['itmpicint']);	
    	$avatar->build();
    
    } else if ($equip[$ir['equip_ottavo']]['itmid']) {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->add_layer($equip[$ir['equip_ottavo']]['itmpicint']);	
    	$avatar->build();
    
    } 
    else {
    	$avatar->add_layer("images/bases/body.png");
    	$avatar->build();
    }	
    ?>
    file index.php
    (immagine.jpg è pagina.php)

    codice:
    ...
    [img]immagine.jpg[/img]
    ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non ho letto tutto il codice, ma se vuoi usare $ir come globale dentro una funzione dovresti mettere una dichiarazione global dentro la funzione stessa

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.