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

    Upload GIF e trasparenza


    Sto cercando di utilizzare una classe per caricare i + comuni formati immagine, la classe funziona molto bene se non fosse per le GIF trasparenti alle quali durante l'upload appunto viene tolta questa trasparenza:

    Di seguito riporto la classe in questione
    codice:
    class upload
    {
    	var $directory_name;
    	var $max_filesize;
    	var $error;
    	var $user_tmp_name;
    	var $user_file_name;
    	var $user_file_size;
    	var $user_file_type;
    	var $user_full_name;
    	var $thumb_name;
    
     	function set_directory($dir_name = ".")
    	{
    	 $this->directory_name = $dir_name;
    	}
    
     	function set_max_size($max_file = 300000)
    	{
    	 $this->max_filesize = $max_file;
    	}
    
     	function error()
    	{
    	 return $this->error;
    	}
    
     	function is_ok()
    	{
    	 if(isset($this->error))
    	  return FALSE;
    	 else
    	  return TRUE;
    	}
    
    	function set_tmp_name($temp_name)
    	{
    	 $this->user_tmp_name = $temp_name;	 
    	}
    
    	function set_file_size($file_size)
    	{
    	 $this->user_file_size = $file_size;
    	}
    
    	function set_file_type($file_type)
    	{
    	 $this->user_file_type = $file_type;	 
    	}
    
     	function set_file_name($file)
    	{
    		$this->user_file_name = $file;
    		$this->user_full_name = $this->directory_name."/".$this->user_file_name;
    	}
    
    	function resize($max_width = 0, $max_height = 0 )
    	{
    	if(eregi("\.png$",$this->user_full_name))
    	{
    	 $img = ImageCreateFromPNG ($this->user_full_name);
    	}
    	
    	if(eregi("\.(jpg|jpeg)$",$this->user_full_name))
    	{
    	 $img = ImageCreateFromJPEG ($this->user_full_name);
    	}
    	
    	if(eregi("\.gif$",$this->user_full_name))
    	{
    	 $img = ImageCreateFromGif ($this->user_full_name);
    	}
    
        	$FullImage_width = imagesx ($img);    
        	$FullImage_height = imagesy ($img);   
    
    		if(isset($max_width) && isset($max_height) && $max_width != 0 && $max_height != 0)
    		{
    		 $new_width = $max_width;
    		 $new_height = $max_height;
    		}
    		else if(isset($max_width) && $max_width != 0)
    		{
    		 $new_width = $max_width;
    		 $new_height = ((int)($new_width * $FullImage_height) / $FullImage_width);
    		}
    		else if(isset($max_height) && $max_height != 0)
    		{
    		 $new_height = $max_height;
    		 $new_width = ((int)($new_height * $FullImage_width) / $FullImage_height);
    		}		
    		else
    		{
    		 $new_height = $FullImage_height;
    		 $new_width = $FullImage_width;
    		}	
    /*
        	$ratio =  ( $FullImage_width > $max_width ) ? (real)($max_width / $FullImage_width) : 1 ;
        	$new_width = ((int)($FullImage_width * $ratio));    //full size width
        	$new_height = ((int)($FullImage_height * $ratio));    //full size height
        	
        	$ratio =  ( $new_height > $max_height ) ? (real)($max_height / $new_height) : 1 ;
        	$new_width = ((int)($new_width * $ratio));    //mid size width
        	$new_height = ((int)($new_height * $ratio));    //mid size height
    */
    
        	$full_id =  ImageCreateTrueColor ( $new_width , $new_height );
    		ImageCopyResampled ( $full_id, $img, 0,0,0,0, $new_width, $new_height, $FullImage_width, $FullImage_height );
    		
    
    		if(eregi("\.(jpg|jpeg)$",$this->user_full_name))
    		{
    		 $full = ImageJPEG( $full_id, $this->user_full_name,100);
    		}
    		
    		if(eregi("\.png$",$this->user_full_name))
    		{
    		 $full = ImagePNG( $full_id, $this->user_full_name);
    		}
    		
    		if(eregi("\.gif$",$this->user_full_name))
    		{
    		 $full = ImageGIF($full_id, $this->user_full_name);
    		}
    		ImageDestroy( $full_id );
    		unset($max_width);
    		unset($max_height);
    	}
    
    	function start_copy()
    	{
    		if(!isset($this->user_file_name))
    		 $this->error = "You must define filename!";
    
            if ($this->user_file_size <= 0)
    		 $this->error = "File size error (0): $this->user_file_size KB
    ";
    
            if ($this->user_file_size > $this->max_filesize)
    		 $this->error = "File size error (1): $this->user_file_size KB
    ";
    
            if (!isset($this->error))
            {
    			$filename = basename($this->user_file_name);
    
                if (!empty($this->directory_name)) 
    				$destination = $this->user_full_name;
    			else 
    				$destination = $filename;
    /* file exists control.. if file is exists it upload new file name
    			if (file_exists($destination))
                {
                	srand((double)microtime()*1000000);
                	$filename = rand(0,20000)."_".$filename;
                	if (!empty ($this->directory_name) ) 
    					$destination = $this->directory_name."/".$filename;
    				else 
    					$destination = $filename;
                }
    			
    */			
    			if(!is_uploaded_file($this->user_tmp_name))
    			 $this->error = "File ".$this->user_tmp_name." is not uploaded correctly.";
    	  
    			if (!@move_uploaded_file ($this->user_tmp_name,$destination))
    			 $this->error = "Impossible to copy ".$this->user_file_name." from $userfile to destination directory.";
    		}
    	}
    	
    	function set_thumbnail_name($thumbname)
    	{
    	if(eregi("\.png$",$this->user_full_name))
    	 $this->thumb_name = $this->directory_name."/".$thumbname.".png";
    	if(eregi("\.(jpg|jpeg)$",$this->user_full_name))
    	 $this->thumb_name = $this->directory_name."/".$thumbname.".jpg";
    	if(eregi("\.gif$",$this->user_full_name))
    	 $this->thumb_name = $this->directory_name."/".$thumbname.".gif";
    	}
    	
    	function create_thumbnail()
    	{
    	 if (!copy($this->user_full_name, $this->thumb_name))
    	  {
    	  echo "
    ".$this->user_full_name.", ".$this->thumb_name."
    ";
    	   echo "failed to copy $file...
    \n";
    	  }
    	}
    	
    	function set_thumbnail_size($max_width = 0, $max_height = 0 )
    	{
    	if(eregi("\.png$",$this->thumb_name))
    	{
    	 $img = ImageCreateFromPNG ($this->thumb_name);
    	}
    	
    	if(eregi("\.(jpg|jpeg)$",$this->thumb_name))
    	{
    	 $img = ImageCreateFromJPEG ($this->thumb_name);
    	}
    	
    	if(eregi("\.gif$",$this->thumb_name))
    	{
    	 $img = ImageCreateFromGif ($this->thumb_name);
    	}
    
        	$FullImage_width = imagesx ($img);    
        	$FullImage_height = imagesy ($img); 
    		
    		if(isset($max_width) && isset($max_height) && $max_width != 0 && $max_height != 0)
    		{
    		 $new_width = $max_width;
    		 $new_height = $max_height;
    		}
    		else if(isset($max_width) && $max_width != 0)
    		{
    		 $new_width = $max_width;
    		 $new_height = ((int)($new_width * $FullImage_height) / $FullImage_width);
    		}
    		else if(isset($max_height) && $max_height != 0)
    		{
    		 $new_height = $max_height;
    		 $new_width = ((int)($new_height * $FullImage_width) / $FullImage_height);
    		}		
    		else
    		{
    		 $new_height = $FullImage_height;
    		 $new_width = $FullImage_width;
    		}	
    /*
        	$ratio =  ( $FullImage_width > $max_width ) ? (real)($max_width / $FullImage_width) : 1 ;
        	$new_width = ((int)($FullImage_width * $ratio));    //full size width
        	$new_height = ((int)($FullImage_height * $ratio));    //full size height
        	
        	$ratio =  ( $new_height > $max_height ) ? (real)($max_height / $new_height) : 1 ;
        	$new_width = ((int)($new_width * $ratio));    //mid size width
        	$new_height = ((int)($new_height * $ratio));    //mid size height
    */
        	$full_id =  ImageCreateTrueColor ( $new_width , $new_height );
    		ImageCopyResampled ( $full_id, $img, 0,0,0,0, $new_width, $new_height, $FullImage_width, $FullImage_height );
    		
    
    		if(eregi("\.(jpg|jpeg)$",$this->thumb_name))
    		{
    		 $full = ImageJPEG( $full_id, $this->thumb_name,100);
    		}
    		
    		if(eregi("\.png$",$this->thumb_name))
    		{
    		 $full = ImagePNG( $full_id, $this->thumb_name);
    		}
    		
    		if(eregi("\.gif$",$this->thumb_name))
    		{
    		 $full = ImageGIF($full_id, $this->thumb_name);
    		}
    		ImageDestroy( $full_id );
    		unset($max_width);
    		unset($max_height);
    	}
    }

    ...il suo utilizzo
    codice:
    <?
    include "upload.inc.php";
    $img_name_new = rand(0, 9999999);
    
    // Defining Class
    $yukle = new upload;
    
    // Set Max Size
    $yukle->set_max_size(180000);
    
    // Set Directory
    $yukle->set_directory("upload");
    
    // Do not change
    // Set Temp Name for upload, $_FILES['file']['tmp_name'] is automaticly get the temp name
    $yukle->set_tmp_name($_FILES['file']['tmp_name']);
    
    // Do not change
    // Set file size, $_FILES['file']['size'] is automaticly get the size
    $yukle->set_file_size($_FILES['file']['size']);
    
    // Do not change
    // Set File Type, $_FILES['file']['type'] is automaticly get the type
    $yukle->set_file_type($_FILES['file']['type']);
    
    // Set File Name, $_FILES['file']['name'] is automaticly get the file name.. you can change
    $yukle->set_file_name($_FILES['file']['name']);
    
    // Start Copy Process
    $yukle->start_copy();
    
    // If uploaded file is image, you can resize the image width and height
    // Support gif, jpg, png
    $yukle->resize(0,0);
    
    // Control File is uploaded or not
    // If there is error write the error message
    if($yukle->is_ok())
    ;
    else
     echo $yukle->error()."
    ";
    
    // Set a thumbnail name
    $yukle->set_thumbnail_name($img_name_new);
    
    // create thumbnail
    $yukle->create_thumbnail();
    
    // change thumbnail size
    $yukle->set_thumbnail_size(0, 0);
    
    $yukle->set_thumbnail_name('thumb_'.$img_name_new);
    $yukle->create_thumbnail();
    $yukle->set_thumbnail_size(50, 0);
    
    /*
    $yukle->set_thumbnail_name("hatice3");
    $yukle->create_thumbnail();
    $yukle->set_thumbnail_size(62, 150);
    */
    $ric_est = explode('.', $_FILES['file']['name']);
    $estensione = '.'.$ric_est[1]; 
    unlink('./upload/'.$_FILES['file']['name']);
    ?>
    <html>
    <head>
    <title></title>
    <link rel="STYLESHEET" type="text/css" href="stile.css">
    </head>
    <body bgcolor="#333333">
    [img]upload/<?php echo $img_name_new.$estensione ?>[/img]
    </body></html>
    come posso far si che le GIF trasparenti rimangano tali?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il formato gif per ottenere l'effetto trasparena mostra come trasparente un particolare colore, e per farlo tramite php devi usare questa funzione:

    http://it2.php.net/manual/it/functio...ransparent.php


  3. #3
    capito, un pochino complicato da integrare in quella classe per me

    hai modo per piacere di farmi vedere come posso integrare il tutto in quella classe (che vorrei mantenere) ?

    p.s.: la trasparenza viene data ad un colore specifico oppure prende la trasparenza della GIF ?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  4. #4
    Sorry, ok riuscito grazie 1000
    Tanto...lo fanno tutti... posso farlo anche io vero?

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.