function RenderSkin($data, $view = 'head', $cache = TRUE) { if ($view != 'body' && $view != 'back') { $view = 'head'; } // create image $source = imagecreatefromstring($data); if ($view == 'head') { $rendered = imagecreatetruecolor(60, 60); } else { // body or back $rendered = imagecreatetruecolor(120, 240); } $b = 60; $s = 8; // fill new image with pink $pink = imagecolorallocate($rendered, 255, 0, 255); imagefilledrectangle($rendered, 0, 0, 120, 240, $pink); // set transparent color if ($view != 'head') { imagecolortransparent($rendered, $pink); } // create flipped version $fsource = FlipImage($source); // imagecopyresampled( dst_image , src_image , dst_x , dst_y , src_x , src_y , dst_w , dst_h , src_w , src_h ) // full body if ($view == 'body') { // head imagecopyresampled($rendered, $source, $b / 2, 0, $s, $s, $b, $b, $s, $s); // head accesory imagecopyresampled($rendered, $source, $b / 2, 0, $s * 5, $s, $b, $b, $s, $s); // body imagecopyresampled($rendered, $source, $b / 2, $b, $s * 2.5, $s * 2.5, $b, $b * 1.5, $s, $s * 1.5); // left arm imagecopyresampled($rendered, $source, $b * 1.5, $b, $s * 5.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // right arm imagecopyresampled($rendered, $fsource, 0, $b, $s * 2, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // left leg imagecopyresampled($rendered, $source, $b / 2, $b * 2.5, $s / 2, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // right leg imagecopyresampled($rendered, $fsource, $b * 1, $b * 2.5, $s * 7, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // full back } elseif ($view == 'back') { // head imagecopyresampled($rendered, $source, $b / 2, 0, $s * 3, $s, $b, $b, $s, $s); // head accesory imagecopyresampled($rendered, $source, $b / 2, 0, $s * 7, $s, $b, $b, $s, $s); // body imagecopyresampled($rendered, $source, $b / 2, $b, $s * 4, $s * 2.5, $b, $b * 1.5, $s, $s * 1.5); // left arm imagecopyresampled($rendered, $source, $b * 1.5, $b, $s * 6.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // right arm imagecopyresampled($rendered, $fsource, 0, $b, $s * 1, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // left leg imagecopyresampled($rendered, $source, $b * 1, $b * 2.5, $s * 1.5, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // right leg imagecopyresampled($rendered, $fsource, $b / 2, $b * 2.5, $s * 6, $s * 2.5, $b / 2, $b * 1.5, $s / 2, $s * 1.5); // head only } else { // head imagecopyresampled($rendered, $source, 0, 0, $s, $s, $b, $b, $s, $s); } if (!isset($_GET['testing'])) { // browser cache 3 hours $expire_time = 3 * 60 * 60; if (!$cache) { $expire_time = 0 - $expire_time; } header('Cache-Control: private, max-age=' . $expire_time . ', pre-check=' . $expire_time); header('Pragma: private'); header('Expires: ' . @date(DATE_RFC822, time() + $expire_time)); // display rendered image header('Content-type: image/png'); } imagepng($rendered); imagedestroy($source); imagedestroy($rendered); exit; }
function DrawImage($img_location, $x, $y, $flipped = false, $to_image = null) { global $im; if (file_exists($img_location)) { if (DEBUGGING) { echo "Found " . $img_location . "\r\n"; } $image = imagecreatefrompng($img_location); if ($flipped) { $image = FlipImage($image); } imagecopy($to_image === null ? $im : $to_image, $image, $x, $y, 0, 0, imagesx($image), imagesy($image)); imagedestroy($image); } elseif (DEBUGGING) { echo "-- Could not find " . $img_location . " --\r\n"; } }