Včera jsme si po třech letech geocachingu (kdo neví, o čem mluvím, tak tady najde přehršel informací) dopřáli ten luxus a zaplatili si roční předplatné premium účtu. Výhod je hned několik, ale pro mě nejpodstatnější je ta, že si můžu nastavit upozornění na nově vzniklé keše v okolí např. 10 km od domova a pak pořádat s obdobně postiženými kačery hony na tzv. FTF, neboli First The Find, což je kouzelná zkratka, za kterou by mnoho maniaků v dešti a sněhu jelo smykem přes půl města na sjetých letních gumách ve své škodě 110. Hned večer jsme si to vyzkoušeli na vlastní kola na nově vzniklé kešce nedaleko našeho bydliště. Adrenalin jak byk 🙂

Když už je člověk premium členem, chce se nějak odlišit. A proč nezačít statusbarem. To je ikonka, jejíž kód si můžete nechat vygenerovat přímo serverem geocaching.com, ukazuje kolik kešek jste našli, kolik založili, odkazuje na váš profil a vypadá takto:

Profile for Krajzlici

Vyhovovala mi přesně tak dlouho, než jsem zjistil, že lze změnit. Na českém fóru o geocachingu se někdo zmínil o serveru devfolio.com, kde si můžete takový statusbar vygenerovat sami buď z dostupných obrázků, nebo autorovi zašlete vlastní, on je publikuje, až se vyspí a pak je máte k dispozici. Zkusmo jsem tam jeden poslal, abych službu otestoval. Opravdu to funguje.

Pak mě ale napadlo, co bude, až server devfolio.com třeba jednou zavře krám? Kam se podějou ty desítky či stovky tisíc statusbarů? Pokud máte vlastní server, není nic snažšího, než použít kód, který nabízím níže. Princip asi nemusím vysvětlovat. Jediné, co je třeba změnit, jsou odkazy na obrázky v proměnných url_img1, url_img2 a url_img3. Výsledkem je vygenerovaný PNG soubor, který vložíte do odkazu SRC značky IMG a hotovo. Snadné, což?

Kód je nyní optimalizován pro použití bez nutných úprav velikostí obrázků

<?
$url_img1 = "http://img.geocaching.com/stats/img.aspx?txt=+4+...";
//zde bude kód, který vyčteme ze stránky pro generování statusbaru na geocaching.com
$url_img2 = "http://geo.elka.cz/geo_czech.gif";  //sirka musi 48
$url_img3 = "http://geo.elka.cz/geo_netko.gif";  //sirka musi 48

list($sirkaObrazku1, $vyskaObrazku1) = getimagesize($url_img1);
list($sirkaObrazku2, $vyskaObrazku2) = getimagesize($url_img2);
list($sirkaObrazku3, $vyskaObrazku3) = getimagesize($url_img3);

//---- zjistime velikosti 3 obrazku
$obrazek1 = imagecreatefrompng($url_img1);
$obrazek2 = imagecreatefromgif($url_img2);
$obrazek3 = imagecreatefromgif($url_img3);

$vyska = $vyskaObrazku1;

//---- nastavime vychozi pevne hodnoty
$sirka_statusbaru_gc = 200; //nemenit!!!
$aktivni_sirka_statusbaru_gc = 152; //nemenit!!!
$sirka = $sirkaObrazku2 + $aktivni_sirka_statusbaru_gc + $sirkaObrazku3;

//--- vytvorime novy obrazek

$novyObrazek = imagecreatetruecolor($sirka, $vyska);

//---- a nakopirujeme do nej puvodni obrazky
imagecopy($novyObrazek, $obrazek1, $sirkaObrazku2, 0, $sirka_statusbaru_gc-$aktivni_sirka_statusbaru_gc, 0, $sirkaObrazku1, $vyskaObrazku1);
imagecopy($novyObrazek, $obrazek2, 1, vyskaObrazku1+1, 0, 0, $sirkaObrazku2, $vyskaObrazku2);
imagecopy($novyObrazek, $obrazek3, $aktivni_sirka_statusbaru_gc+$sirkaObrazku2-1, vyskaObrazku1+1, 0, 0, $sirkaObrazku3, $vyskaObrazku3);

//--- vyhodime obrazek na stránku
header("Content-Type:image/png");
imagepng($novyObrazek);
?>

Samotný skript v nějaké stránce pak použijete takto:

<img src="tady bude adresa toho skriptu" />

tedy v mém případě takto:
<img src="http://geo.elka.cz/geostat.php" />

A výsledek pak může vypadat třeba takto:

Krajzlici geocaching