home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / akce / web / phpbb2plus / phpBB2_plus_1.52.exe / phpBB2 / text2schild.php < prev    next >
PHP Script  |  2004-07-18  |  7KB  |  168 lines

  1. <?
  2.  
  3. define('IN_PHPBB', 'true');
  4. $phpbb_root_path = './';
  5. include($phpbb_root_path . 'extension.inc');
  6. include($phpbb_root_path . 'common.'.$phpEx);
  7.  
  8. $userdata = session_pagestart($user_ip, PAGE_INDEX, $session_length);
  9. init_userprefs($userdata);
  10.  
  11. $raute = "#";
  12. $schriftfarbe = $raute.$HTTP_GET_VARS['fontcolor'];
  13. $schriftdatei = "arial";
  14.  
  15. $smilie = $HTTP_GET_VARS['smilie'];
  16.  
  17. if ( $HTTP_GET_VARS['shadowcolor'] == '' )
  18. {
  19. $schattenfarbe = "";
  20. }
  21. else
  22. {
  23. $schattenfarbe = $raute.$HTTP_GET_VARS['shadowcolor'];
  24. }
  25.  
  26. if ( $HTTP_GET_VARS['smilie'] == 'standard' )
  27. {
  28. $smilie = $std_smilie;
  29. }
  30.  
  31. $std_smilie = 1;
  32. $schildschatten = $HTTP_GET_VARS['shieldshadow'];
  33.  
  34. $anz_smilie = -1;
  35. $hdl = opendir("./smilie_creator/images/smilies/schild/");
  36. while($res = readdir($hdl)){
  37.     if(strtolower(substr($res, (strlen($res) - 3), 3)) == "png") $anz_smilie++;
  38. }
  39. closedir($hdl);
  40.  
  41.  
  42. if($phpversion_nr >= 4.30) $gd_info = gd_info();
  43. else{
  44.     $gd_info["FreeType Support"] = 1;
  45. }
  46.  
  47. if((!$gd_info["FreeType Support"]) || (!file_exists($schriftdatei))){
  48.     $schriftwidth = 6;
  49.     $schriftheight = 8;
  50. }else{
  51.     if((!$schriftheight) || (!$schriftwidth)){
  52.         $schriftwidth = imagefontwidth($schriftdatei);
  53.         $schriftheight = imagefontheight($schriftdatei);
  54.     }
  55. }
  56. $schriftheight += 2;
  57.  
  58.  
  59. if(!$text) $text = $_GET["text"];
  60. $text = stripslashes($text);
  61. $text = str_replace("<","<",$text);
  62. $text = str_replace(">",">",$text);
  63.  
  64. while(substr_count($text, "<")){
  65.     $text = ereg_replace(substr($text, strpos($text, "<"), (strpos($text, ">") - strpos($text, "<") + 1)), "", $text);
  66. }
  67.  
  68. if(!$text) $text = $lang['SC_error']; 
  69.  
  70. if(strlen($text) > 33){
  71.     $worte = split(" ", $text);
  72.  
  73.     if(is_array($worte)){
  74.         $i = 0;
  75.         foreach($worte as $wort){
  76.             if((strlen($output[$i]." ".$wort) < 33) && (!substr_count($wort, "[SM"))){
  77.                 $output[$i] .= " ".$wort;
  78.             }else{
  79.                 if($i <= 11){
  80.                     if($zeichenzahl < strlen($output[$i])) $zeichenzahl = strlen($output[$i]);
  81.                     $i++;
  82.                     $output[$i] = $wort;
  83.                 }
  84.             }
  85.         }
  86.     }else{
  87.         $zeichenzahl = 33;
  88.         $output[0] = substr($text, 0, 30)."...";
  89.     }
  90. }else{
  91.     $zeichenzahl = strlen($text);
  92.     $output[0] = $text;
  93. }
  94.  
  95. if(count($output) > 12) $output[12] = substr($output[12], 0, 30)."...";
  96.  
  97. $width = ($zeichenzahl * $schriftwidth) + 6;
  98. $height = (count($output) * $schriftheight) + 34;
  99. if($width < 60) $width = 60;
  100.  
  101. mt_srand((double)microtime()*3216549);
  102. if($smilie == "random") $smilie = mt_rand(1,$anz_smilie);
  103. if(!$smilie){
  104.     if($std_smilie) $smilie = $std_smilie;
  105.     else $smilie = mt_rand(1,$anz_smilie);
  106. }
  107.  
  108.  
  109. $smilie = imagecreatefrompng("./smilie_creator/images/smilies/schild/smilie".$smilie.".png");
  110. $schild = imagecreatefrompng("./smilie_creator/images/smilies/schild/schild.png");
  111. $img = imagecreate($width,$height);
  112.  
  113. $bgcolor = imagecolorallocate ($img, 111, 252, 134);
  114. $txtcolor = imagecolorallocate ($img, hexdec(substr(str_replace("#","",$schriftfarbe),0,2)), hexdec(substr(str_replace("#","",$schriftfarbe),2,2)), hexdec(substr(str_replace("#","",$schriftfarbe),4,2)));
  115. $txt2color = imagecolorallocate ($img, hexdec(substr(str_replace("#","",$schattenfarbe),0,2)), hexdec(substr(str_replace("#","",$schattenfarbe),2,2)), hexdec(substr(str_replace("#","",$schattenfarbe),4,2)));
  116. $bocolor = imagecolorallocate ($img, 0, 0, 0);
  117. $schcolor = imagecolorallocate ($img, 255, 255, 255);
  118. $schatten1color = imagecolorallocate ($img, 235, 235, 235);
  119. $schatten2color = imagecolorallocate ($img, 219, 219, 219);
  120.  
  121. $smiliefarbe = imagecolorsforindex($smilie, imagecolorat($smilie, 5, 14));
  122.  
  123. imagesetpixel($schild, 1, 14, imagecolorallocate($schild, ($smiliefarbe["red"] + 52), ($smiliefarbe["green"] + 59), ($smiliefarbe["blue"] + 11)));
  124. imagesetpixel($schild, 2, 14, imagecolorallocate($schild, ($smiliefarbe["red"] + 50), ($smiliefarbe["green"] + 52), ($smiliefarbe["blue"] + 50)));
  125. imagesetpixel($schild, 1, 15, imagecolorallocate($schild, ($smiliefarbe["red"] + 50), ($smiliefarbe["green"] + 52), ($smiliefarbe["blue"] + 50)));
  126. imagesetpixel($schild, 2, 15, imagecolorallocate($schild, ($smiliefarbe["red"] + 22), ($smiliefarbe["green"] + 21), ($smiliefarbe["blue"] + 35)));
  127. imagesetpixel($schild, 1, 16, imagecolorat($smilie, 5, 14));
  128. imagesetpixel($schild, 2, 16, imagecolorat($smilie, 5, 14));
  129. imagesetpixel($schild, 5, 16, imagecolorallocate($schild, ($smiliefarbe["red"] + 22), ($smiliefarbe["green"] + 21), ($smiliefarbe["blue"] + 35)));
  130. imagesetpixel($schild, 6, 16, imagecolorat($smilie, 5, 14));
  131. imagesetpixel($schild, 5, 15, imagecolorallocate($schild, ($smiliefarbe["red"] + 52), ($smiliefarbe["green"] + 59), ($smiliefarbe["blue"] + 11)));
  132. imagesetpixel($schild, 6, 15, imagecolorallocate($schild, ($smiliefarbe["red"] + 50), ($smiliefarbe["green"] + 52), ($smiliefarbe["blue"] + 50)));
  133.  
  134.  
  135. imagecopy ($img, $schild, ($width / 2 - 3), 0, 0, 0, 6, 4); // Bildteil kopieren
  136. imagecopy ($img, $schild, ($width / 2 - 3), ($height - 24), 0, 5, 9, 17); // Bildteil kopieren
  137. imagecopy ($img, $smilie, ($width / 2 + 6), ($height - 24), 0, 0, 23, 23); // Bildteil kopieren
  138.  
  139. imagefilledrectangle($img, 0, 4, $width, ($height - 25), $bocolor);
  140. imagefilledrectangle($img, 1, 5, ($width - 2), ($height - 26), $schcolor);
  141.  
  142. if($schildschatten){
  143.     imagefilledpolygon($img, array((($width - 2) / 2 + ((($width - 2) / 4) - 3)), 5, (($width - 2) / 2 + ((($width - 2) / 4) + 3)), 5, (($width - 2) / 2 - ((($width - 2) / 4) - 3)), ($height - 26), (($width - 2) / 2 - ((($width - 2) / 4) + 3)), ($height - 26)), 4, $schatten1color);
  144.     imagefilledpolygon($img, array((($width - 2) / 2 + ((($width - 2) / 4) + 4)), 5, ($width - 2), 5, ($width - 2), ($height - 26), (($width - 2) / 2 - ((($width - 2) / 4) - 4)), ($height - 26)), 4, $schatten2color);
  145. }
  146.  
  147. $i = 0;
  148. while($i < count($output)){
  149.     if(((!$gd_info["FreeType Support"]) || (!file_exists($schriftdatei)))){
  150.         if($schattenfarbe) imagestring($img, 2, (($width - (strlen(trim($output[$i])) * $schriftwidth) - 2) / 2 + 1), ($i * $schriftheight + 6), trim($output[$i]), $txt2color);
  151.         imagestring($img, 2, (($width - (strlen(trim($output[$i])) * $schriftwidth) - 2) / 2), ($i * $schriftheight + 5), trim($output[$i]), $txtcolor);
  152.     }else{
  153.         if($schattenfarbe) imagettftext($img, $schriftheight, 0, (($width - (strlen(trim($output[$i])) * $schriftwidth) - 2) / 2 + 1), ($i * $schriftheight + $schriftheight + 4), $txt2color, $schriftdatei, trim($output[$i]));
  154.         imagettftext($img, $schriftheight, 0, (($width - (strlen(trim($output[$i])) * $schriftwidth) - 2) / 2), ($i * $schriftheight + $schriftheight + 3), $txtcolor, $schriftdatei, trim($output[$i]));
  155.     }
  156.     $i++;
  157. }
  158.  
  159.  
  160. imagecolortransparent($img, $bgcolor);  // Dummybg als transparenz setzen
  161. imageinterlace($img, 1);
  162.  
  163. header("Content-Type: image/png");
  164. Imagepng($img,'',100);   // 100 = komprimierung
  165. ImageDestroy($img);
  166. ImageDestroy($schild);
  167. ImageDestroy($smilie);
  168. ?>