1401a61e7Swikidesign<?php 2*1affe9b7Swikidesign/** 3*1affe9b7Swikidesign * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 4*1affe9b7Swikidesign * @author Andreas Gohr <andi@splitbrain.org> 5*1affe9b7Swikidesign */ 6401a61e7Swikidesign 7401a61e7Swikidesignbuild_monster($_REQUEST['seed'], $_REQUEST['size']); 8401a61e7Swikidesign 9*1affe9b7Swikidesign/** 10*1affe9b7Swikidesign * Generates a monster for the given seed 11*1affe9b7Swikidesign * GDlib is required! 12*1affe9b7Swikidesign */ 13401a61e7Swikidesignfunction build_monster($seed='',$size=''){ 14401a61e7Swikidesign // init random seed 15401a61e7Swikidesign if($seed) srand( hexdec(substr(md5($seed),0,6)) ); 16401a61e7Swikidesign 17401a61e7Swikidesign // throw the dice for body parts 18401a61e7Swikidesign $parts = array( 19401a61e7Swikidesign 'legs' => rand(1,5), 20401a61e7Swikidesign 'hair' => rand(1,5), 21401a61e7Swikidesign 'arms' => rand(1,5), 22401a61e7Swikidesign 'body' => rand(1,15), 23401a61e7Swikidesign 'eyes' => rand(1,15), 24401a61e7Swikidesign 'mouth'=> rand(1,10) 25401a61e7Swikidesign ); 26401a61e7Swikidesign 27401a61e7Swikidesign // create backgound 28401a61e7Swikidesign $monster = @imagecreatetruecolor(120, 120) 29401a61e7Swikidesign or die("GD image create failed"); 30401a61e7Swikidesign $white = imagecolorallocate($monster, 255, 255, 255); 31401a61e7Swikidesign imagefill($monster,0,0,$white); 32401a61e7Swikidesign 33401a61e7Swikidesign // add parts 34401a61e7Swikidesign foreach($parts as $part => $num){ 35401a61e7Swikidesign $file = dirname(__FILE__).'/parts/'.$part.'_'.$num.'.png'; 36401a61e7Swikidesign 37401a61e7Swikidesign $im = @imagecreatefrompng($file); 38401a61e7Swikidesign if(!$im) die('Failed to load '.$file); 39401a61e7Swikidesign imageSaveAlpha($im, true); 40401a61e7Swikidesign imagecopy($monster,$im,0,0,0,0,120,120); 41401a61e7Swikidesign imagedestroy($im); 42401a61e7Swikidesign 43401a61e7Swikidesign // color the body 44401a61e7Swikidesign if($part == 'body'){ 45401a61e7Swikidesign $color = imagecolorallocate($monster, rand(20,235), rand(20,235), rand(20,235)); 46401a61e7Swikidesign imagefill($monster,60,60,$color); 47401a61e7Swikidesign } 48401a61e7Swikidesign } 49401a61e7Swikidesign 50401a61e7Swikidesign // restore random seed 51401a61e7Swikidesign if($seed) srand(); 52401a61e7Swikidesign 53401a61e7Swikidesign // resize if needed, then output 54401a61e7Swikidesign if($size && $size < 400){ 55401a61e7Swikidesign $out = @imagecreatetruecolor($size,$size) 56401a61e7Swikidesign or die("GD image create failed"); 57401a61e7Swikidesign imagecopyresampled($out,$monster,0,0,0,0,$size,$size,120,120); 58401a61e7Swikidesign header ("Content-type: image/png"); 59401a61e7Swikidesign imagepng($out); 60401a61e7Swikidesign imagedestroy($out); 61401a61e7Swikidesign imagedestroy($monster); 62401a61e7Swikidesign }else{ 63401a61e7Swikidesign header ("Content-type: image/png"); 64401a61e7Swikidesign imagepng($monster); 65401a61e7Swikidesign imagedestroy($monster); 66401a61e7Swikidesign } 67401a61e7Swikidesign} 68*1affe9b7Swikidesign 69*1affe9b7Swikidesign//Setup VIM: ex: et ts=4 enc=utf-8 : 70