Utklippstavle

Legg inn en helt ny kode

Valgmuligheter

Nic0 sendte inn denne php-koden 02.02.2006 kl. 17:07.

<?php
/*
Dette er en klasse ment til bruk ved opplastning av bilde som skal
resizes.
 
Klassen følger Størrelsesforholdet mellom bredde og høyde
Du definerer derfor en ønsket bredde og en maksimal høyde.
Om bildet vil overstige maks høyden, vil både høyde og 
bredde reduseres så det passer til maks høyde
istedenfor ønsket bredde
 
 
KREVER PHP 4.0 eller nyere
 
Nicolai Haugen
www.nicosweb.net
nico@nicosweb.net
*/
 
 
class move_resized{
	//Her kommer noen setting, rediger disse om ønskelig
	var $dir 			= 'img/'; //Mappen alle bilder skal lagres i
	var $thumbs_dir		= 'img/thumbs/';//Mappen thumbnails skal lagres i
	var $thumbs_prefix	= 'thumb_';//Prefiksen til bildet. f.eks thumb_bilde.jpg
	var $max_file_size 	= '100000'; //Maks filstørrelse i bytes
	var $make_thumb		= true; //Sett denne til false om du ikke ønsker å lage en thumbnail
	var $resize_img		= true; //Sett denne til false om du ikke ønsker resizing av bilder
	var $bredde			= 500; //Ønsket bredde
	var $hoyde			= 500; //Maksimal høyde på bildet
	var $thumb_bredde	= 100; //Ønsket bredde på thumbnail
	var $thumb_hoyde	= 100; //Maksimal høyde på thumbnail
	var $write_string	= false; //Sett til false om du ikke vil ha tekst på bildet
	var $string			= 'nicosweb.net'; //Ønsket tekst som skal skrives på bildet
	var $add_logo		= true; //Legg til logo på bildet, settes denne til true må src under spesifiseres og write_String vil bli automatisk satt til false
	var $logo_src		= 'logo.gif'; //Logoen du vil legge på bildet hvis overnevnte er satt til true. støtter .gif, .jpg og .png(selv fått best resultat med gif og transparency)
	var $string_farge	= '#ffffff'; //Ønsket farge på strengen
	var $string_font	= 'arial.ttf'; //TTF fil som skal brukes til strengen, må lastes opp om serveren ikke har freetype instalert og må da ende med filendelse (arial.ttf)
	var $maks_bredde	= '1000'; //Maksimal bredde på bildet brukeren laster opp
	var $maks_hoyde		= '1000'; //Maksimal høyde på bildet brukeren laster opp
	var $jpgquality		= 100; //Komprimeringsfaktor for jpg bilder. mellom 0 og 100;
 
	//Her slutter config delen, ingenting nedenfor skal behøves redigert
	//-----------------------------------------------------------------//
	 function slettBilde($del){
			unlink($del);
	}
 
	 function valid($fil){
	$imgInfo = getimagesize($fil);
 
		if($imgInfo[2] <= 3 && $imgInfo[2] > 0){
			if($imgInfo[0] <= $this->maks_brede || $imgInfo[1] <= $this->maks_hoyde){
					if(filesize($fil) <= $this->max_file_size){
						if($this->rgb() != false){
							return true;
						} else {
							//echo 'Scriptet er feil configurert, fargekoden til string er ikke gyldig, kontakt webmaster!<br />';
							return false;	
						}					
					} else {
						//echo 'Bildet '.$fil. 'er for stort i kb! maksimalt størrelse er '.$this->max_file_size.' byte<br />';
						return false;
					}				
			} else {
				//echo 'Bildet '.$fil. 'er for stort i px. maks er;'. $this->maks_bredde.'x'.$this->maks_hoyde.'<br />';
				return false;	
			}	
		} else {
			return false;	
		}	
	}
 
	function move($bilde, $navn){
		if($this->valid($bilde) == true){
			if($this->make_thumb == true){
				if($this->resize($bilde, $this->thumbs_prefix.$navn, $this->thumb_bredde, $this->thumb_hoyde, $this->thumbs_dir, true) == false){
					return false;	
				} 			
			}
 
			if($this->resize($bilde, $navn, $this->bredde, $this->hoyde, $this->dir, false) == false){
				return false;	
			}
			$this->slettBilde($bilde);	
			return true;		
		} else {
			return false;	
		}
	}
	 function resize($img_name, $bildenavn, $picsize, $max_height, $dir, $thumb = false){
	    $bildetekst = $this->string;
	    $fontsize = ceil($picsize / 17); //Tilsvarer 30px ved 500 px bredth bilde
	    $fontfile = $this->string_font;
 
		$imgInfo = getimagesize($img_name);
		$imgType = $imgInfo[2];
 
		switch ($imgType){
			case 2:
				$src_img = imagecreatefromjpeg($img_name);
				break;	
			case 3:
				$src_img = imagecreatefrompng($img_name);
				break;
			case 1:
				$src_img = imagecreatefromgif($img_name);
				break;
			default:
				print $imgType . "En ugyldig bildetype ble funnet";
				exit;
		}
 
 
	    $new_w = imagesx($src_img);
	    $new_h = imagesy($src_img);
 
 
	    if(($picsize < $new_w && $this->resize_img == true) || $thumb == true){
		 	// Regn ut Størrelsesforholdet
		    $aspect_ratio = $new_h / $new_w;
		    // Sett den nye størrelsen på bildet
 
		    $new_w = $picsize;
		    $new_h = abs($new_w * $aspect_ratio);
	    }
	    //Sjekk om h&#65533;yden p&#65533; bildet ikke overstiger maks&#65533;yden v&#65533;r
	    if ($new_h > $max_height){
	    	//reduser h&#65533;yden og bredden p&#65533; bildet s&#65533; det n&#65533;r den maksimale h&#65533;yden
	    	//Holder aspect ratio!
	    		$temp = $new_h - $max_height;
	    		$new_h -= $temp;
	    		$new_w -= $temp;
	    }
 
	    //Lag det nye bildet
	   // if($imgType == 1){	
	    	$new_img = imagecreate($new_w,$new_h) or die("En ukjent feil oppstod, kunne ikke sende bildet til midlertidig minne"); 
	    //} else {
	   		 $new_img = imagecreatetruecolor($new_w,$new_h) or die("En ukjent feil oppstod, kunne ikke sende bildet til midlertidig minne"); //Lag det nye bildet i 32biter fargecart istedenfor standard 256+1
	    //}
 
 
	    //Kopier allt inn i nytt bilde
	   // imagecopyresized($new_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));  
	    if(imagecopyresampled($new_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)) == false){
	    	return false;	
	    }
 
	    if($this->add_logo == true && $thumb == false){
	    	$logoinfo =	getimagesize($this->logo_src);
 
	    	if(( $logoinfo[0] <= $new_w + 70 ) && ( $logoinfo[1] <= $new_h + 50 )){
 
		    	switch ($logoinfo[2]){
		    		case 2:
		    			$logo_src = @imagecreatefromjpeg($this->logo_src);
		    			break;
		    		case 3:
		    			$logo_src = @imagecreatefrompng($this->logo_src);
		    			break;
		    		case 1:	
		    			$logo_src = @imagecreatefromgif($this->logo_src);
		    			break;
		    		default:
		    			die("<h1>Alvorlig feil oppstått!</h1><h2> Logoen er ikke en godkjent bildetype, kun GIF, PNG og JPEG tillatt!!!!</h2>");
		    			break;
		    	}
 
		    	if(!$logo_src){
		    		return false;	
		    	}
 
		    	$dst_x = $new_w - $logoinfo[0] - 5;
		    	$dst_y = $new_h - $logoinfo[1] - 5;
 
		    	imagecopymerge($new_img, $logo_src, $dst_x, $dst_y, 0, 0, $logoinfo[0], $logoinfo[1], 100);
	    	}
	    } else if($this->write_string == true && $thumb == false){
 
	    	//Skriv tekst p&#65533; bildet
		    $colors = $this->rgb();
		    $textcolor = imagecolorallocate($new_img, $colors[0], $colors[1], $colors[2]); //Fargen p&#65533; teksten
 
		    $textinfo = imagettfbbox($fontsize, 0, $fontfile, $bildetekst);
		    $stringwidth = $textinfo[2] - $textinfo[0]; 
		    $y = $new_h - 5;
		    $x = $new_w - $stringwidth - 5;
 
		    imagettftext($new_img, $fontsize, 0, $x, $y, $textcolor, $fontfile, $bildetekst); 
 
	    }
		$savepos = $dir.$bildenavn;
	    // Returner bildet
	    switch ($imgType){
			case 2:
				if($this->jpgquality > 100) $this->jpgquality = 100;
				if($this->jpgquality < 0 ) $this->jpgquality = 10;
				imageinterlace($new_img, 1);
				imagejpeg($new_img, $savepos, $this->jpgquality);
				break;	
			case 3:
				imageantialias($new_img, true);
				imagepng($new_img, $savepos);
				break;
			case 1:
				imageantialias($new_img, true);
				imagepng($new_img, $savepos);	
			//imagegif($new_img, $savepos);
				break;
			default:
				print $imgType . "Dette bildet er ikke en godkjent bildetype";
				break;
		}
 
		imagedestroy($new_img); //T&#65533;m minnet for bildet for &#65533; spare serveren for resurser...
	}
 
	 function rgb(){
		$validHexes = array();
		if(preg_match('/^#[0-9a-fA-F]{6,6}$/', $this->string_farge, $validHexes)){
			//Første steg fullført
			//Stringen inneholder riktige tegn, og riktig antall.
 
			$r = hexdec(substr($validHexes[0], 1, 2));
			$g = hexdec(substr($validHexes[0], 3, 2));
			$b = hexdec(substr($validHexes[0], 5, 2));
 
			if(($r <= 255)&&($g <= 255)&&($b <= 255)){
				return array($r, $g, $b);
			} else {
				return false;	
			}	
		} else {
			return false;
		}	
	}
 
	function setFolders($img, $thumb){
		$this->dir = $img;
		$this->thumbs_dir = $thumb;
	}
 
	function setBredde($bredde){
		$this->bredde = $bredde;
	}
 
	function setHoyde($hoyde){
		$this->hoyde = $hoyde;	
	}
 
	function setThumbBredde($bredde){
		$this->thumb_bredde = $bredde;	
	}
 
	function setThumbHoyde($hoyde){
		$this->thumb_hoyde = $hoyde;	
	}
 
	function makeThumb($thumb){
		$this->make_thumb = (bool) $thumb;	
	}
 
	function writeString($string){
		$this->write_string = (bool) $string;	
	}
 
	function setStringColor($color){
			if($this->rgb($color) != false){
				$this->string_farge = $color;
			} else {
				die( "<h3>FEIL: Du har angitt en ugyldig farge i setStringColor()</h3>" );	
			}
	}
 
	function setString($string){
		$this->string = substr($string, 0, 15);
	}
 
	function setStringFont($font){
		$this->string_font = $font;	
	}
 
	function setLogoSrc($src){
		$this->logo_src = $src;	
	}
 
	function addLogo($addLogo = false){
		$this->add_logo = $addLogo;	
	}
}
 
?>

Tilbake til toppen ^