xref: /plugin/avatar/monsterid.php (revision 401a61e7c508b2eef98d85133e4fffdb58d8ca88) !
1*401a61e7Swikidesign<?php
2*401a61e7Swikidesign
3*401a61e7Swikidesignbuild_monster($_REQUEST['seed'],$_REQUEST['size']);
4*401a61e7Swikidesign
5*401a61e7Swikidesignfunction build_monster($seed='',$size=''){
6*401a61e7Swikidesign    // init random seed
7*401a61e7Swikidesign    if($seed) srand( hexdec(substr(md5($seed),0,6)) );
8*401a61e7Swikidesign
9*401a61e7Swikidesign    // throw the dice for body parts
10*401a61e7Swikidesign    $parts = array(
11*401a61e7Swikidesign        'legs' => rand(1,5),
12*401a61e7Swikidesign        'hair' => rand(1,5),
13*401a61e7Swikidesign        'arms' => rand(1,5),
14*401a61e7Swikidesign        'body' => rand(1,15),
15*401a61e7Swikidesign        'eyes' => rand(1,15),
16*401a61e7Swikidesign        'mouth'=> rand(1,10)
17*401a61e7Swikidesign    );
18*401a61e7Swikidesign
19*401a61e7Swikidesign    // create backgound
20*401a61e7Swikidesign    $monster = @imagecreatetruecolor(120, 120)
21*401a61e7Swikidesign        or die("GD image create failed");
22*401a61e7Swikidesign    $white   = imagecolorallocate($monster, 255, 255, 255);
23*401a61e7Swikidesign    imagefill($monster,0,0,$white);
24*401a61e7Swikidesign
25*401a61e7Swikidesign    // add parts
26*401a61e7Swikidesign    foreach($parts as $part => $num){
27*401a61e7Swikidesign        $file = dirname(__FILE__).'/parts/'.$part.'_'.$num.'.png';
28*401a61e7Swikidesign
29*401a61e7Swikidesign        $im = @imagecreatefrompng($file);
30*401a61e7Swikidesign        if(!$im) die('Failed to load '.$file);
31*401a61e7Swikidesign        imageSaveAlpha($im, true);
32*401a61e7Swikidesign        imagecopy($monster,$im,0,0,0,0,120,120);
33*401a61e7Swikidesign        imagedestroy($im);
34*401a61e7Swikidesign
35*401a61e7Swikidesign        // color the body
36*401a61e7Swikidesign        if($part == 'body'){
37*401a61e7Swikidesign            $color = imagecolorallocate($monster, rand(20,235), rand(20,235), rand(20,235));
38*401a61e7Swikidesign            imagefill($monster,60,60,$color);
39*401a61e7Swikidesign        }
40*401a61e7Swikidesign    }
41*401a61e7Swikidesign
42*401a61e7Swikidesign    // restore random seed
43*401a61e7Swikidesign    if($seed) srand();
44*401a61e7Swikidesign
45*401a61e7Swikidesign    // resize if needed, then output
46*401a61e7Swikidesign    if($size && $size < 400){
47*401a61e7Swikidesign        $out = @imagecreatetruecolor($size,$size)
48*401a61e7Swikidesign            or die("GD image create failed");
49*401a61e7Swikidesign        imagecopyresampled($out,$monster,0,0,0,0,$size,$size,120,120);
50*401a61e7Swikidesign        header ("Content-type: image/png");
51*401a61e7Swikidesign        imagepng($out);
52*401a61e7Swikidesign        imagedestroy($out);
53*401a61e7Swikidesign        imagedestroy($monster);
54*401a61e7Swikidesign    }else{
55*401a61e7Swikidesign        header ("Content-type: image/png");
56*401a61e7Swikidesign        imagepng($monster);
57*401a61e7Swikidesign        imagedestroy($monster);
58*401a61e7Swikidesign    }
59*401a61e7Swikidesign}
60