« 1 2 3
Autor Zpráva
Amunak
Profil
Achjo. Tak teda funkční kód, který produkuje toto:


Ale jestli chceš něco víc, nebo aby to vypadalo jinak, uprav si to sám. Používám na to cizí API, ne knihovnu, ale to by neměl být velký problém.

<?php

    $config = array(
        'query' => array(
            'address' => 'hivemc.eu', //adresa serveru
            'port' => 25565 //port
        ),
        'image' => array(
            'cache' => '2 minutes', //doba, po kterou by prohlížeč měl obrázek uchovávat v keši
            'size' => array(500, 28), //velikost obrázku
            'bg' => array(160, 8, 8), //barva pozadí
            'fg' => array(255, 255, 255), //barva popředí (textu)
            'fontFamily' => './minecraft.ttf', //cesta k fontu
            'fontSize' => 12 //velikost písma
        )
    );
    
    header('Content-Type: image/png');
    header('Expires: ' . gmdate("D, d M Y H:i:s", strtotime('+' . $config['image']['cache'])) . ' GMT');
    
    function err($msg = '') {
        if(empty($msg))
            $msg = 'unknown error';
        header('Expires: ' . gmdate("D, d M Y H:i:s", 12345) . ' GMT');
        header('HTTP/1.1 500 Internal Server Error');
        header('Content-Type: text/plain');
        echo '\n Image creation failed: ' . $msg;
        exit;
    }
    
    function iAddColor($image, $rgb) {
        return imagecolorallocate($image, $rgb[0], $rgb[1], $rgb[2]);
    }
    
    if(!file_exists($config['image']['fontFamily']))
        err('font not found');

    $i = imagecreate ($config['image']['size'][0] , $config['image']['size'][1]) or err('no resource');
    
    $color['bg'] = iAddColor($i, $config['image']['bg']);
    if($color['bg'] === false)
        err('color allocation failed: background');
    $color['fg'] = iAddColor($i, $config['image']['fg']);
    if($color['fg'] === false)
        err('color allocation failed: foreground');
    
    imagefilledrectangle ($i , 0 , 0 , $config['image']['size'][0] , $config['image']['size'][1] , $color['bg'])
        or err('filling background failed');
    
    //připojení k API a získání údajů
    $res = file_get_contents('http://api.iamphoenix.me/get/?server_ip=' . urlencode($config['query']['address'] . ':' . $config['query']['port']));
    if($res === false)
        err('API connection lost');
    $res = json_decode($res);
    if($res === null)
        err('decoding data failed');
    if(isset($res->error)) {
        imagettftext ($i , $config['image']['fontSize'], 0, 10, 22, $color['fg'], $config['image']['fontFamily'], 'Error: ' . $res->error)
            or err('writing error failed (e: ' . $res->error . ')');
    } else {
        //vykreslení textu
        if($res->status) {
            $ncoord = imagettftext ($i , $config['image']['fontSize'], 0, 10, 22, $color['fg'], $config['image']['fontFamily'], $config['query']['address'] . ($config['query']['port'] == 25565 ? '' : ':' . $config['query']['port']) . ' (' . $res->version . '): ')
                or err('writing text (server address) failed');
            imagettftext ($i , $config['image']['fontSize'], 0, $ncoord[2] + 8, 22, $color['fg'], $config['image']['fontFamily'], $res->players . '/' . $res->players_max)
                or err('writing text (player count) failed');
        } else {
            $ncoord = imagettftext ($i , $config['image']['fontSize'], 0, 10, 22, $color['fg'], $config['image']['fontFamily'], $config['query']['address'] . ' je offline')
                or err('writing text (offline) failed');            
        }
    }

    imagepng($i) or err('could not output image');
sitole
Profil



Vše funguje..
« 1 2 3

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: