示例#1
0
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;
}
示例#2
0
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";
    }
}