CompZone.Org :: Artykuły :: PHP
Pytania w drugiej edycji Testu PHP powinny być:
Trudniejsze
Łatwiejsze
Skomplikowane
Na myślenie
Do liczenia
Sonda Wyniki

Add to Google

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).

Taki avatar możecie zobaczyć tutaj. Przyjrzyjcie mu się dobrze ;]

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

jedre @ 10-07-2006 17:25

#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.

aosc @ 30-12-2006 13:14
Copyright © 2005-2006 Compzone.Org. Kopiowanie i wykorzystywanie materiałów zawartych na tej stronie bez zgody autora zabronione!