Na pewno masz na swojej stronie jakąś grafikę. Mniej lub bardziej skomplikowaną, którą pracowicie przygotowałeś w jednym z wielu programów graficznych. Różne jej elementy składają się na wygląd twojej strony i za każdym razem kiedy internauta ją odwiedza może podziwiać wynik twojej pracy.
o autorach
Michał Paluchowski CEO, właściciel i redaktor vortalu NetHut.pl. Jego ulubionym tygodnikiem jest Wprost, a na co dzień z przyjemnością czyta Gazetę Wyborczą. Jest zakochany w muzyce i komputerach, czasem nieco ekscentryczny. Zawsze otwarty na nowe znajomości.
Łącznie napisał dla nas 45 artykułów.tych samych autorów
- IMAP w stylu PHP [MP]
- Własne RSS [MP]
- Rodzina XSL [MP]
- Wprowadzenie do XML [MP]
- Rozszerzenia XSSI [MP]
zobacz również
Nie wydaje się to trochę nudne? Za każdym razem widzieć tą samą grafikę... Oczywiście podstawowe elementy wyglądu, logo, menu nawigacyjne, wszystko to podlega zasadom użyteczności i nie powinno się co chwila zmieniać. Są jednak elementy, które aż proszą się o ich dynamiczne tworzenie, zależnie od potrzeb.
- wszelkiego rodzaju wykresy, graficznie prezentujące zebrane w innym procesie dane
- tytuły stron w formie graficznej, tworzone po podaniu ich treści, np. pobranych z bazy danych
- wzory matematyczne i napisy w alfabetach, których nie obsługują standardowe czcionki
- także zwiększenie poziomu bezpieczeństwa, poprzez podawanie użytkownikom haseł w formie graficznej
Możliwości są tu naprawdę nieograniczone.
Jeżeli tylko mamy możliwość korzystania z PHP (a w tej chwili jest to bardzo łatwe do osiągnięcia) świat dynamicznie tworzonej grafiki stoi przed nami otworem. Można też do tego wykorzystać Perl, jeżeli dysponujemy modułem GD.pm. W tym artykule ograniczymy się jednak do PHP, w który wbudowane są funkcje dotyczące tworzenia grafiki.
Zakładam, że masz podstawową wiedzę o działaniu i funkcjach PHP. Jeżeli tak nie jest, to generacja grafiki nie jest dla ciebie dobrym początkiem. Jest to dosyć skomplikowane i bardzo pracochłonne, ale czym byłoby życie bez nowych wyzwań?
No to zaczynamy...
Czy leci z nami pilot?
Zanim będziemy mogli cokolwiek stworzyć należy się upewnić czy w ogóle mamy taką możliwość, tzn. czy odpowiednie moduły zostały zainstalowane wraz z PHP.
Będziemy potrzebowali bibliotek GD, FreeType i libjpeg. Z kolei sam GD potrzebuje do działania libpng i zlib.
Jeżeli wynajmujesz miejsce na serwerze to problem ten leży w gestii administratora i do niego należy kierować pytania o dostępność modułów generacji grafiki. Z reguły są one włączone.
Jeżeli kierujesz własnym serwerem opartym o system Windows także problem jest niewielki, ponieważ domyślna instalacja PHP zawiera te moduły już wbudowane. Wystarczy sprawdzić to w pliku php.ini.
Jeśli z kolei masz serwer na innym systemie i wcześniej nie dołączyłeś tych modułów, będziesz musiał ponownie skompilować PHP dopisując do pliku ./configure
--with-gd=/path/to/gd
--with-jpeg-dir=/path/to/libjpeg
--with-zlib-dir=/path/to/zlib
Zakładając oczywiście, że te biblioteki znajdują się na twoim komputerze. W przeciwnym wypadku musisz je ściągnąć.
Jeżeli już wszystko działa, możemy zabrać się za właściwą pracę, czyli generację grafiki.
Nowy obraz
Pierwszym krokiem jest określenie pola, na jakim będziemy tworzyć naszą grafikę. Wykorzystujemy do tego funkcję ImageCreate(), podając jej jako argumenty wielkość obrazka. Taki właśnie obszar zostanie dla niego wyznaczony.
$obraz = ImageCreate(szerokosc, wysokosc);
Funkcja ta tworzy obraz o palecie kolorów ograniczonej do tych, które zdefiniujesz przez kolejną funkcję ImageColorAllocate();. Pierwszy określony w ten sposób kolor stanie się kolorem tła. Funkcja przyjmuje w definicjach kolorów dziesiątkowe wartości RGB i dodatkowo podać należy nazwę zmiennej z obrazkiem:
$kolor1 = ImageColorAllocate($obraz, 255, 24, 150);
Oczywiście nic nie stoi na przeszkodzie, żeby całą paletę zapisać w tablicy zmiennych, np. $kolor[]. Jeżeli koniecznie potrzebujecie obrazka w True Color, bez określonej palety, jest to także możliwe. Wtedy tworzymy na początku obrazek przez funkcję:
$obraz = ImageCreateTrueColor(szerokosc, wysokosc);
Możemy też tworzyć obrazy z już gotowych, jeśli chcemy je np. poddać edycji. Wykorzystujemy wtedy funkcje ImageCreateFrom<format>. Dokładny spis tych funkcji znajdziesz tutaj wraz z innymi informacjami dotyczącymi tworzenia obrazków.
Skoro mamy już określoną paletę kolorów, możemy zacząć tworzyć właściwy rysunek. Do wykorzystania są takie funkcje jak ImageEllipse() czy ImageRectangle() do rysowania elips i prostokątów. Ich stosowanie nie jest skomplikowane a dokładny opis znajduje się w dokumentacji PHP, więc nie ma sensu ich tutaj opisywać.
Gotowe są także funkcje do wstawiania tekstu, ImageTTFText() dla czcionek True Type, ImagePSText() dla czcionek PostScript Type 1. Można tu korzystać z dowolnych czcionek, które znajdują się na serwerze. Za każdym razem należy podać do nich odpowiednią ścieżkę.
I na koniec, kiedy już mamy gotowe wspaniałe dzieło i chcemy je pokazać na stronie, musimy je ostatecznie wygenerować do pliku przez funkcje ImagePNG() lub ImageJPEG(), odpowiednio dla pożądanego formatu. Dodatkowo możemy wygenerować funkcją ImageWBMP() obraz na potrzeby aplikacji WAP. Ze względów licencyjnych, format GIF nie jest dostępny w bibliotekach GD od wersji 1.6 wzwyż. Możesz się dowiedzieć jakie formaty są obsługiwane wpisując funkcję ImageTypes().
Aby taki obrazek umieścić na stronie, wywołujemy go standardowym znacznikiem IMG:
<img src="obrazek.php" width="szerokosc" height="....
Tyle że jako źródło określony jest skrypt.