![]()
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
come posso far si che le GIF trasparenti rimangano tali?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>

Rispondi quotando