jak na vlastni statusbar

pokud jste si všimli, tak někteří lidé mají upravený statusbar se statistikami nalezených a založených cache na geocaching.com. informací jak si statusbar změnit není na netu mnoho, tak se můžeme podívat na možnosti 🙂

  • geocaching.cz, mělo by stačit zadat adresu svého statbaru na gc.com, nahrát vlastní obrazek a nastavit si umístění čísla FoundHidden. podkladový obrázek musí obsahovat popis těchto polí, takže můžeme použít třeba českých názvů.
    statusbar
  • devfolio.com, asi nejznámější a nejpropracovanější služba. můžeme si nastavit obrázek zleva, obrázek zprava, pozadí, text. pokud se vám nelíbí ty obrázky co jsou na výběr (všiměte si, nemálo jich je od českých kačerů), tak musíte obrázek poslat autorovi a on ho přidá na web.
    statusbar
  • elka.cz, elka pro nás sice připravil php skript, který by měl statusbar pitvořit k obrazu našemu, ale mě se nepodařilo ho rozchodit (viz dále).
  • vlastní skript.

při tvorbě vlastního skriptu jsem, coby php analfabet, vycházel ze skriptu od elky. a nakonec se ho podařilo rozhejbat pomocí curl. (nefungovalo mi načtení obrázku pokud byla cesta uvedena s http://)

do poznamkovýho bloku zkopírujeme následující kód:

<?php
// ***********************************************************************
// navod z: http://edenik.elka.cz/geocaching-a-statusbary-zoptimalizovano/
// http://www.geocaching.cz/topic/4710-vlastn-obrzek-v-statistice-signature/
// http://www.geocaching.cz/topic/5242-nastavte-si-avatary/
// ***********************************************************************

//---- stazeni obrazku ze serveru gc.com
// https://web.archive.org/web/20151006160754/http://wiki.dreamhost.com:80/index.php/CURL
$image_url = <span class="php-quote">"http://img.geocaching.com/stats/img.aspx?txt=HTC+Kaiser+%2B+GeoGet&amp;uid=c3b9afaa-8556-4ddc-9d17-12459c86528b";
$ch = curl_init();
$timeout = <span class="php-num">0;
curl_setopt ($ch, CURLOPT_URL, <span class="php-var">$image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, <span class="php-var">$timeout);

// Getting binary data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="php-num">1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, <span class="php-num">1);

// Save image in binary in $image
$image = curl_exec(<span class="php-var">$ch);
curl_close($ch);

//---- avatar
$url_img2 = <span class="php-quote">'mikrom.gif'; // vyska musi byt 48

//---- zjistime velikosti obrazku
$sirkaObrazku1 = <span class="php-num">200;
$vyskaObrazku1 = <span class="php-num">50;
list(<span class="php-var">$sirkaObrazku2, <span class="php-var">$vyskaObrazku2) = <span class="php-keyword2">getimagesize(<span class="php-var">$url_img2);

//---- vytvoreni obrazku
$obrazek1 = imagecreatefromstring(<span class="php-var">$image);
$obrazek2 = <span class="php-keyword2">imagecreatefromGIF(<span class="php-var">$url_img2);

//---- nastavime vychozi pevne hodnoty
$vyska = <span class="php-var">$vyskaObrazku1;
$sirka_statusbaru_gc = <span class="php-num">200; //nemenit!!!
$aktivni_sirka_statusbaru_gc = <span class="php-num">152; //nemenit!!!
$sirka = <span class="php-var">$sirkaObrazku2 + <span class="php-var">$aktivni_sirka_statusbaru_gc; // + $sirkaObrazku3;
$posunuti = <span class="php-var">$sirka_statusbaru_gc-<span class="php-var">$aktivni_sirka_statusbaru_gc;

//--- vytvorime novy obrazek
$novyObrazek = imagecreatetruecolor(<span class="php-var">$sirka, <span class="php-var">$vyska);

//---- a nakopirujeme do nej puvodni obrazky
imagecopy($novyObrazek, <span class="php-var">$obrazek1, <span class="php-var">$sirkaObrazku2, <span class="php-num">0, <span class="php-var">$posunuti, <span class="php-num">0, <span class="php-var">$sirkaObrazku1, <span class="php-var">$vyskaObrazku1);
imagecopy($novyObrazek, <span class="php-var">$obrazek2, <span class="php-num">1, <span class="php-num">1, <span class="php-num">0, <span class="php-num">0, <span class="php-var">$sirkaObrazku2, <span class="php-var">$vyskaObrazku2);

//--- vyhodime obrazek na stránku
header(<span class="php-quote">'Content-Type:image/png');
imagePNG($novyObrazek);

//---- smazeme z pameti abychom ji nezahlcovali
imagedestroy(<span class="php-var">$obrazek1);
imagedestroy(<span class="php-var">$obrazek2);
imagedestroy(<span class="php-var">$novyObrazek);
?>

s tím, že do proměnné $image_url (11. řádek) uložíme cestu ke statusbaru na geocaching.com a do proměnné $url_img2 (24. řádek) cestu k vlastnímu obrázku (gif, výška 48px), který je uložen na stejném místě jako php skript. a uložíme s příponou .php.

skript jak jsem pochopil, stáhne původní statusbar, odřízne z něj logo geocachingu a místo něj připlácne náš obrázek 🙂

výsledek už implantujeme jak píše elka:

<img src=„tady bude adresa toho skriptu“ />

tedy v mém případě takto:

<img src=„http://geo.elka.cz/geostat.php“ />

a mělo by to fungovat takto:

statusbar

po tomto úspěchu už bylo otázkou chvilky skript modifikovat na ten proužek co vidíte v pravém sloupci tohoto webu statbar.

<?php
// ***********************************************************************
// navod z: http://edenik.elka.cz/geocaching-a-statusbary-zoptimalizovano/
// http://www.geocaching.cz/topic/4710-vlastn-obrzek-v-statistice-signature/
// http://www.geocaching.cz/topic/5242-nastavte-si-avatary/
// ***********************************************************************

//---- stazeni obrazku ze serveru gc.com
// https://web.archive.org/web/20151006160754/http://wiki.dreamhost.com:80/index.php/CURL
$image_url = <span class="php-quote">"http://img.geocaching.com/stats/img.aspx?txt=View+my+profile&amp;uid=c3b9afaa-8556-4ddc-9d17-12459c86528b";
$ch = curl_init();
$timeout = <span class="php-num">0;
curl_setopt ($ch, CURLOPT_URL, <span class="php-var">$image_url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, <span class="php-var">$timeout);

// Getting binary data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, <span class="php-num">1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, <span class="php-num">1);

// Save image in binary in $image
$image = curl_exec(<span class="php-var">$ch);
curl_close($ch);

//---- vytvorime obrazek $input
$image_width = <span class="php-num">200;
$image_height = <span class="php-num">50;
$input = imagecreatefromstring(<span class="php-var">$image);

//--- vytvorime novy obrazek $output
$output_width = <span class="php-num">140;
$output_height = <span class="php-num">9;
$output = imagecreatetruecolor(<span class="php-var">$output_width, <span class="php-var">$output_height);

//---- do obrazku $output nakopirujeme cast obrazku $input
imagecopy($output, <span class="php-var">$input, <span class="php-num">0, <span class="php-num">0, <span class="php-num">53, <span class="php-num">22, <span class="php-var">$image_width, <span class="php-var">$image_height);

//---- vyhodime obrazek na stránku
header(<span class="php-quote">'Content-Type: image/png');
imagePNG($output);

//---- smazeme z pameti abychom ji nezahlcovali
imagedestroy(<span class="php-var">$input);
imagedestroy(<span class="php-var">$output);
?>

 

mikrom

Roman Mikulka aka mikrom. Ajťák, opravář, programátor samouk, elektrotechnik, koloběžkář a geocacher. Více na samostatné stránce O mně.

Mohlo by se vám líbit...

Subscribe
Upozornit na

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

3 Komentáře
nejstarší
nejnovější
Inline Feedbacks
View all comments
14.1.2009 13:08

zdravím mam podle tohodle navodu udělaný status bar ale když do loga použiju ruhledný gif ma v pozadí černou barvu da se to nějak upravit ?

3
0
Would love your thoughts, please comment.x