Utklippstavle

Legg inn en helt ny kode

Valgmuligheter

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

  1. <?php
  2. /*
  3. Dette er en klasse ment til bruk ved opplastning av bilde som skal
  4. resizes.
  5.  
  6. Klassen følger Størrelsesforholdet mellom bredde og høyde
  7. Du definerer derfor en ønsket bredde og en maksimal høyde.
  8. Om bildet vil overstige maks høyden, vil både høyde og
  9. bredde reduseres så det passer til maks høyde
  10. istedenfor ønsket bredde
  11.  
  12.  
  13. KREVER PHP 4.0 eller nyere
  14.  
  15. Nicolai Haugen
  16. www.nicosweb.net
  17. nico@nicosweb.net
  18. */
  19.  
  20.  
  21. class move_resized{
  22. //Her kommer noen setting, rediger disse om ønskelig
  23. var $dir = 'img/'; //Mappen alle bilder skal lagres i
  24. var $thumbs_dir = 'img/thumbs/';//Mappen thumbnails skal lagres i
  25. var $thumbs_prefix = 'thumb_';//Prefiksen til bildet. f.eks thumb_bilde.jpg
  26. var $max_file_size = '100000'; //Maks filstørrelse i bytes
  27. var $make_thumb = true; //Sett denne til false om du ikke ønsker å lage en thumbnail
  28. var $resize_img = true; //Sett denne til false om du ikke ønsker resizing av bilder
  29. var $bredde = 500; //Ønsket bredde
  30. var $hoyde = 500; //Maksimal høyde på bildet
  31. var $thumb_bredde = 100; //Ønsket bredde på thumbnail
  32. var $thumb_hoyde = 100; //Maksimal høyde på thumbnail
  33. var $write_string = false; //Sett til false om du ikke vil ha tekst på bildet
  34. var $string = 'nicosweb.net'; //Ønsket tekst som skal skrives på bildet
  35. 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
  36. 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)
  37. var $string_farge = '#ffffff'; //Ønsket farge på strengen
  38. 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)
  39. var $maks_bredde = '1000'; //Maksimal bredde på bildet brukeren laster opp
  40. var $maks_hoyde = '1000'; //Maksimal høyde på bildet brukeren laster opp
  41. var $jpgquality = 100; //Komprimeringsfaktor for jpg bilder. mellom 0 og 100;
  42.  
  43. //Her slutter config delen, ingenting nedenfor skal behøves redigert
  44. //-----------------------------------------------------------------//
  45. function slettBilde($del){
  46. unlink($del);
  47. }
  48.  
  49. function valid($fil){
  50. $imgInfo = getimagesize($fil);
  51.  
  52. if($imgInfo[2] <= 3 && $imgInfo[2] > 0){
  53. if($imgInfo[0] <= $this->maks_brede || $imgInfo[1] <= $this->maks_hoyde){
  54. if(filesize($fil) <= $this->max_file_size){
  55. if($this->rgb() != false){
  56. return true;
  57. } else {
  58. //echo 'Scriptet er feil configurert, fargekoden til string er ikke gyldig, kontakt webmaster!<br />';
  59. return false;
  60. }
  61. } else {
  62. //echo 'Bildet '.$fil. 'er for stort i kb! maksimalt størrelse er '.$this->max_file_size.' byte<br />';
  63. return false;
  64. }
  65. } else {
  66. //echo 'Bildet '.$fil. 'er for stort i px. maks er;'. $this->maks_bredde.'x'.$this->maks_hoyde.'<br />';
  67. return false;
  68. }
  69. } else {
  70. return false;
  71. }
  72. }
  73.  
  74. function move($bilde, $navn){
  75. if($this->valid($bilde) == true){
  76. if($this->make_thumb == true){
  77. if($this->resize($bilde, $this->thumbs_prefix.$navn, $this->thumb_bredde, $this->thumb_hoyde, $this->thumbs_dir, true) == false){
  78. return false;
  79. }
  80. }
  81.  
  82. if($this->resize($bilde, $navn, $this->bredde, $this->hoyde, $this->dir, false) == false){
  83. return false;
  84. }
  85. $this->slettBilde($bilde);
  86. return true;
  87. } else {
  88. return false;
  89. }
  90. }
  91. function resize($img_name, $bildenavn, $picsize, $max_height, $dir, $thumb = false){
  92. $bildetekst = $this->string;
  93. $fontsize = ceil($picsize / 17); //Tilsvarer 30px ved 500 px bredth bilde
  94. $fontfile = $this->string_font;
  95.  
  96. $imgInfo = getimagesize($img_name);
  97. $imgType = $imgInfo[2];
  98.  
  99. switch ($imgType){
  100. case 2:
  101. $src_img = imagecreatefromjpeg($img_name);
  102. break;
  103. case 3:
  104. $src_img = imagecreatefrompng($img_name);
  105. break;
  106. case 1:
  107. $src_img = imagecreatefromgif($img_name);
  108. break;
  109. default:
  110. print $imgType . "En ugyldig bildetype ble funnet";
  111. }
  112.  
  113.  
  114. $new_w = imagesx($src_img);
  115. $new_h = imagesy($src_img);
  116.  
  117.  
  118. if(($picsize < $new_w && $this->resize_img == true) || $thumb == true){
  119. // Regn ut Størrelsesforholdet
  120. $aspect_ratio = $new_h / $new_w;
  121. // Sett den nye størrelsen på bildet
  122.  
  123. $new_w = $picsize;
  124. $new_h = abs($new_w * $aspect_ratio);
  125. }
  126. //Sjekk om h&#65533;yden p&#65533; bildet ikke overstiger maks&#65533;yden v&#65533;r
  127. if ($new_h > $max_height){
  128. //reduser h&#65533;yden og bredden p&#65533; bildet s&#65533; det n&#65533;r den maksimale h&#65533;yden
  129. //Holder aspect ratio!
  130. $temp = $new_h - $max_height;
  131. $new_h -= $temp;
  132. $new_w -= $temp;
  133. }
  134.  
  135. //Lag det nye bildet
  136. // if($imgType == 1){
  137. $new_img = imagecreate($new_w,$new_h) or die("En ukjent feil oppstod, kunne ikke sende bildet til midlertidig minne");
  138. //} else {
  139. $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
  140. //}
  141.  
  142.  
  143. //Kopier allt inn i nytt bilde
  144. // imagecopyresized($new_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
  145. if(imagecopyresampled($new_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)) == false){
  146. return false;
  147. }
  148.  
  149. if($this->add_logo == true && $thumb == false){
  150. $logoinfo = getimagesize($this->logo_src);
  151.  
  152. if(( $logoinfo[0] <= $new_w + 70 ) && ( $logoinfo[1] <= $new_h + 50 )){
  153.  
  154. switch ($logoinfo[2]){
  155. case 2:
  156. $logo_src = @imagecreatefromjpeg($this->logo_src);
  157. break;
  158. case 3:
  159. $logo_src = @imagecreatefrompng($this->logo_src);
  160. break;
  161. case 1:
  162. $logo_src = @imagecreatefromgif($this->logo_src);
  163. break;
  164. default:
  165. die("<h1>Alvorlig feil oppstått!</h1><h2> Logoen er ikke en godkjent bildetype, kun GIF, PNG og JPEG tillatt!!!!</h2>");
  166. break;
  167. }
  168.  
  169. if(!$logo_src){
  170. return false;
  171. }
  172.  
  173. $dst_x = $new_w - $logoinfo[0] - 5;
  174. $dst_y = $new_h - $logoinfo[1] - 5;
  175.  
  176. imagecopymerge($new_img, $logo_src, $dst_x, $dst_y, 0, 0, $logoinfo[0], $logoinfo[1], 100);
  177. }
  178. } else if($this->write_string == true && $thumb == false){
  179.  
  180. //Skriv tekst p&#65533; bildet
  181. $colors = $this->rgb();
  182. $textcolor = imagecolorallocate($new_img, $colors[0], $colors[1], $colors[2]); //Fargen p&#65533; teksten
  183.  
  184. $textinfo = imagettfbbox($fontsize, 0, $fontfile, $bildetekst);
  185. $stringwidth = $textinfo[2] - $textinfo[0];
  186. $y = $new_h - 5;
  187. $x = $new_w - $stringwidth - 5;
  188.  
  189. imagettftext($new_img, $fontsize, 0, $x, $y, $textcolor, $fontfile, $bildetekst);
  190.  
  191. }
  192. $savepos = $dir.$bildenavn;
  193. // Returner bildet
  194. switch ($imgType){
  195. case 2:
  196. if($this->jpgquality > 100) $this->jpgquality = 100;
  197. if($this->jpgquality < 0 ) $this->jpgquality = 10;
  198. imageinterlace($new_img, 1);
  199. imagejpeg($new_img, $savepos, $this->jpgquality);
  200. break;
  201. case 3:
  202. imageantialias($new_img, true);
  203. imagepng($new_img, $savepos);
  204. break;
  205. case 1:
  206. imageantialias($new_img, true);
  207. imagepng($new_img, $savepos);
  208. //imagegif($new_img, $savepos);
  209. break;
  210. default:
  211. print $imgType . "Dette bildet er ikke en godkjent bildetype";
  212. break;
  213. }
  214.  
  215. imagedestroy($new_img); //T&#65533;m minnet for bildet for &#65533; spare serveren for resurser...
  216. }
  217.  
  218. function rgb(){
  219. $validHexes = array();
  220. if(preg_match('/^#[0-9a-fA-F]{6,6}$/', $this->string_farge, $validHexes)){
  221. //Første steg fullført
  222. //Stringen inneholder riktige tegn, og riktig antall.
  223.  
  224. $r = hexdec(substr($validHexes[0], 1, 2));
  225. $g = hexdec(substr($validHexes[0], 3, 2));
  226. $b = hexdec(substr($validHexes[0], 5, 2));
  227.  
  228. if(($r <= 255)&&($g <= 255)&&($b <= 255)){
  229. return array($r, $g, $b);
  230. } else {
  231. return false;
  232. }
  233. } else {
  234. return false;
  235. }
  236. }
  237.  
  238. function setFolders($img, $thumb){
  239. $this->dir = $img;
  240. $this->thumbs_dir = $thumb;
  241. }
  242.  
  243. function setBredde($bredde){
  244. $this->bredde = $bredde;
  245. }
  246.  
  247. function setHoyde($hoyde){
  248. $this->hoyde = $hoyde;
  249. }
  250.  
  251. function setThumbBredde($bredde){
  252. $this->thumb_bredde = $bredde;
  253. }
  254.  
  255. function setThumbHoyde($hoyde){
  256. $this->thumb_hoyde = $hoyde;
  257. }
  258.  
  259. function makeThumb($thumb){
  260. $this->make_thumb = (bool) $thumb;
  261. }
  262.  
  263. function writeString($string){
  264. $this->write_string = (bool) $string;
  265. }
  266.  
  267. function setStringColor($color){
  268. if($this->rgb($color) != false){
  269. $this->string_farge = $color;
  270. } else {
  271. die( "<h3>FEIL: Du har angitt en ugyldig farge i setStringColor()</h3>" );
  272. }
  273. }
  274.  
  275. function setString($string){
  276. $this->string = substr($string, 0, 15);
  277. }
  278.  
  279. function setStringFont($font){
  280. $this->string_font = $font;
  281. }
  282.  
  283. function setLogoSrc($src){
  284. $this->logo_src = $src;
  285. }
  286.  
  287. function addLogo($addLogo = false){
  288. $this->add_logo = $addLogo;
  289. }
  290. }
  291.  
  292. ?>

Tilbake til toppen ^

cron