Dynamiczny avatar
Po przeczytaniu artykułu będziecie w stanie zrobić swój własny avatar zmieniający treść w zależności od sytuacji (dynamiczny).
Avatar będziemy tworzyć wykorzystując funkcje rysujące z biblioteki GD, biblioteka ta obsługuje 4 formaty obrazków: jpg, gif, png, wbmp. Wszystkie powinny być wam znane oprócz jednego a mianowicie wbpm, aby wyjaśnić co to takiego przytoczę zdanie z podręcznika php & mysql:
WBMP
WBMP oznacza Wireless Bitmap (bezprzewodowa grafika rastrowa). Jest to format pliku utworzony specjalnie dla urządzeń bezprzewodowych.Przejdźmy jednak do sedna sprawy, poniżej znajduje się kod tworzący powyższy avatar.
Kod PHP:
![]()
<?
//pobranie ip usera oglądającego avatar
$ip = $_SERVER["REMOTE_ADDR"];
![]()
//pobranie i ustalenie formatu czasu i daty
$czas = date( "H:i:s" );
$data = date( "d.m.Y" );
![]()
//tworzenie kadru obrazka z istniejącego pliku
$avatar = imagecreatefromgif( 'tlo.gif' );
![]()
//ustalenia kolorów
$bialy = imagecolorallocate( $avatar, 255, 255, 255 );
$bord = imagecolorallocate( $avatar, 170, 0, 32 );
$czarny = imagecolorallocate( $avatar, 0, 0, 0 );
![]()
//wyswietlanie tekstu na obrazku
imagestring( $avatar, 1, 3, 2, 'Twój ip:', $czarny );
imagestring( $avatar, 1, 3, 12, $ip, $bord );
imagestring( $avatar, 1, 3, 30, 'Godzina:', $czarny );
imagestring( $avatar, 1, 3, 42, $czas, $bialy );
imagestring( $avatar, 1, 3, 58, 'Data:', $czarny );
imagestring( $avatar, 1, 3, 68, $data, $bialy );
![]()
//informacja dla przegladarki o wyswietleniu obrazka
header( 'Content-type: image/png' );
![]()
//wyświetlenie obrazka
imagepng( $avatar );
![]()
//zwracanie zasobów serwera
imagedestroy( $avatar );
![]()
?>
Opiszę teraz ważniejsze fragmenty kodu.
![]()
//tworzenie kadru obrazka z istniejącego pliku
$avatar = imagecreatefromgif( 'tlo.gif' );
Powyższy kod tworzy kadr obrazka z istniejącego już pliku, tymi plikami mogą być pliki: gif, png, jpeg. Ja zastosowałem plik gif.
Sama funkcja ImageCreateFromGif pobiera jeden parametr a jest nim nazwa pliku (obrazka), oczywiście plik musi być w katalogu ze skryptem jeśli jest w innym to należy odpowiednio zmodyfikować ścieżkę :)
Jest jeszcze jedna bardzo ważna rzecz w powyższym kodzie zmienna $avatar staje się jednocześnie identyfikatorem tworzonego obrazka.
![]()
//ustalenia kolorów
$bialy = imagecolorallocate( $avatar, 255, 255, 255 );
$bord = imagecolorallocate( $avatar, 170, 0, 32 );
$czarny = imagecolorallocate( $avatar, 0, 0, 0 );
Teraz za pomocą funkcji ImageColorAllocate ustalamy kolory których będziemy używać. Funkcja ta pobiera 4 parametry, identyfikator obrazka, oraz wartości składników RGB.
![]()
//wyswietlanie tekstu na obrazku
imagestring( $avatar, 1, 3, 2, 'Twój ip:', $czarny );
imagestring( $avatar, 1, 3, 12, $ip, $bord );
imagestring( $avatar, 1, 3, 30, 'Godzina:', $czarny );
imagestring( $avatar, 1, 3, 42, $czas, $bialy );
imagestring( $avatar, 1, 3, 58, 'Data:', $czarny );
imagestring( $avatar, 1, 3, 68, $data, $bialy );
Natomiast w tym kodzie użyjemy funkcji ImageString, za pomocą której nałożymy etykiety tekstowe na obrazek.
Prototyp funkcji ImageString
int ImageString ( int id, int czcionka, int x, int y, string tekst, int kolor )
Pobiera ona jako parametry: identyfikator, wielkość czcionki, współrzędne początku zapisu tekstu, tekst który ma zostać wyświetlony, kolor tekstu.
Cytat:
"Godne zapamiętania jest to, że współrzędne obrazka rozpoczynają się od lewego górnego rogu który posiada współrzędne x=0 i y=0. Lewy dolny róg obrazka x=szerokośc, y=wysokośc. Należy o tym pamiętać, gdyż są to zasady odwrotne niż typowe konwencje graficzne."
![]()
//informacja dla przeglądarki o wyświetleniu obrazka
header( 'Content-type: image/png' );
Header - informujemy przeglądarkę że chcemy do niej wysłać obrazek ja zdecydowałem się na obrazek png więc zastosowałem image/png, analogicznie dla obrazka gif będzie to image/gif itd.
![]()
//wyświetlenie obrazka
imagepng( $avatar );
Wyświetlamy obrazek w przeglądarce za pomocą funkcji ImagePng, funkcja ta pobiera identyfikator obrazka.
![]()
//zwracanie zasobów serwera
imagedestroy( $avatar );
Na sam koniec zwalniamy zasoby serwera, poprzez zniszczenie identyfikatora pliku :)
Wskazówka
Aby wykorzystać taki avatar na forum trzeba nieco oszukać skrypt. Jak nam wiadomo forum akceptuje tylko niektóre pliki obrazków a już na pewno nie akceptuje plików php jako avatar :) Co zrobić z tym fantem? Tutaj z pomocą przychodzą nam takie serwisy jak http://skocz.pl. Dzięki nim możemy utworzyć link w stylu http://skocz.pl/avatar.jpg, który w rzeczywistości będzie tylko aliasem do pliku php :D Więc zamiast ścieżki podajemy alias do pliku utworzony np. za pomocą serwisu http://skocz.pl i wszystko powinno ładnie działać :D
#1
Bardzo fajny artykuł, opisana każda funkcja bardzo łatwo wprowadza w bibliotekę GD nawet największych lajów takich np. jak ja. Dziękuje autorowi.










