Utklippstavle
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�yden p� bildet ikke overstiger maks�yden v�r if ($new_h > $max_height){ //reduser h�yden og bredden p� bildet s� det n�r den maksimale h�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� bildet $colors = $this->rgb(); $textcolor = imagecolorallocate($new_img, $colors[0], $colors[1], $colors[2]); //Fargen p� 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�m minnet for bildet for � 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; } } ?>



