Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Biblioteki - Dynamiczna grafika w PHP

Wiele osób uważa, że PHP nie jest niczym innym jak tylko językiem skryptowym do obsługi kody HTML. PHP to jednak znacznie więcej ? to język obsługujący bazy danych (np. MySQL), operacje graficzne (w tym artykule opisana została biblioteka GD do wykonywania właśnie operacji graficznych), wykresy i wiele innych. W tym artykule jak już wspomniałem opiszę instalację i korzystanie z popularnej biblioteki GD(2), oczywiście istnieje jeszcze jedna popularna biblioteka obrazków PHP, która nazywa się ImageMagick, ale o niej to już nie w tym artykule.

Konfigurowanie obsługi obrazków w PHP

Aby włączyć w PHP obsługę GD należy otworzyć np. w notatniku plik php.ini, który zazwyczaj znajduje się w systemowym katalogu WINDOWS ( C:/WINDOWS/ ). Gdy już otworzyliśmy plik szukamy w nim linijki ;extension=php_gd2.dll. Usuwany widniejący na początku średnik: extension=php_gd2.dll. Zapisujemy restartujemy serwer i odtąd mamy włączoną obsługę GD. Aby się upewnić zobaczmy w phpinfo czy pokazały się informacje o GD w tym celu tworzymy nowy plik z rozszerzeniem *.php otwieramy go i wpisujemy:

<?php
phpinfo();
?>

Zapisujemy i otwieramy stronę w przeglądarce np. http://localhost/phpinfo.php. Szukamy nagłówka gd z informacjami powinno to wygląda miej więcej tak:

Począwszy od wersji 4.3, PHP jest dystrybuowany ze swoją własną wersją biblioteki GD2 rozwijaną przez zespół PHP. W systemie Windows obrazki PNG i JPEG są obsługiwane automatycznie.

Jeśli zechcecie wykorzystywać obrazki PNG w systemie Unix, będziecie musieli zainstalować libpng oraz zlib, dostępne odpowiednio pod adresami:

A w dalszej kolejności skonfigurować PHP z następującymi opcjami:

Następnie należy zmienić konfiguracje PHP za pomocą opcji:

po czym dokonać ponownej kompilacji.

Użycie w generowanych obrazkach czcionki TrueType wymaga biblioteki FreeType. Jest ona dostępna pod adresem:

Następnie trzeba skonfigurować PHP z opcją:

Na końcu trzeba oczywiście skonfigurować PHP używając opcji --with-gd.

Formaty obrazków

Biblioteka GD obsługuje następujące formaty:

JPEG - znaczy Joint Photographic ExpertsGroup (połączona grupa ekspertów fotograficznych) i jest nazwą grupy tworzącej standardy. Format plików opisywanych jako JPEG w istocie nazywa się JFIF, co odpowiada jednemu ze standardów stworzonych przez grupę JPEG.

Pliki JPEG są zazwyczaj stosowane do przechowywania zdjęć. W tym formacie zastosowana jest kompresja stratna, to znaczy zmniejszenie wielkości pliku zdjęcia odbywa się kosztem jakości obrazka.

PNG - oznacza Portable Network Graphics (przenośna grafika sieciowa). Format ten jest postrzegany jako następna formatu GIF. Format ten charakteryzuje się lepszą kompresją niż GIF oraz zmienną przezroczystością, korekcją gamma i dwuwymiarowym przeplotem. Nie pozwala jednak na tworzenie animacji.

WBMP - oznacza Wireless Bitmap (bezprzewodowa grafika rastrowa). Jest to format pliku utworzony specjalnie dla urządzeń bezprzewodowych. Format ten jest używany stosunkowo rzadko.

GD nie obsługuje formatu GIF, więc nie będę opisywał tego rozszerzenia.

Tworzenie obrazków

Rysowanie rysunków w PHP składa się z czterech etapów:

  1. Stworzenie kadru, w którym będzie umieszczony obrazek.
  2. Rysownie kształtów, itp. lub umieszczenie tekstu.
  3. Wyświetlanie obrazka.
  4. Zwalnianie zasobów

Na samym początku przedstawię bardzo prosty przykład kodu tworzącego obrazek. Więc napiszmy mały fragment kodu:

<?php
$wys = 200; //wysokość obrazka podana w px
$szer = 200; //szerokość obrazka podana w px$ob = imagecreatetruecolor($szer, $wys);
$bialy = imagecolorallocate($ob, 255, 255, 255); //podanie wartości koloru (r,g,b)
$niebieski = imagecolorallocate($ob, 0, 0, 64); // to samo co linię wyżej tylko inne wartości//rysowanie obrazka
imagefill($ob, 0, 0, $niebieski);
imagestring($ob, 4, 50, 150, 'Test', $bialy);//wyświetlanie obrazka
header('Content-type: image-png');
imagepng($ob);
imagedestroy($ob); //porządki
?>

Który w wyniku powinien wyświetlić to:

Zatem zacznijmy analizę kodu.

Aby rozpocząć tworzenie lub edycje obrazka w PHP, należy najpierw stworzyć pusty kadr, na przykład poprzez wywołanie funkcji ImageCreate();. W naszym kodzie wygląda to tak:

$ob = imagecreatetruecolor($szer, $wys);
$ob = Imagecreatefromjpeg('obraz.jpeg');

Umieszczenie tekstu na obrazie

Istnieją dwa etapy rysowania lub umieszczania tekstu na obrazku. Na początku trzeba wybrać kolory których chcemy użyć które podajemy w postaci RGB - (red, green, blue) w naszym kodzie wygląda to następująco:

$bialy = imagecolorallocate($ob, 255, 255, 255);
$niebieski = imagecolorallocate($ob, 0, 0, 64);

Tło obrazka możemy wykonać za pomocą funkcji ImageFill();. W powyższym kodzie zostało zastosowane tło niebieskie:

imagefill($ob, 0, 0, $niebieski);

Funkcja pobiera czcionkę, współrzędne x i y, oraz tekst, i kolor, przedstawia czcionkę jako liczba od 1 do 5 alternatywą są czcionki TrueType i PostScript.

Wyświetlanie obrazka

Ostatnim etapem jest wyświetlenie obrazka bądź zapisanie go do pliku. W powyższym przykładzie obrazek został wyświetlony w przeglądarce. Odpowiada za to ten fragment kodu:

header('Content-type: image-png');
imagepng($ob);

Funkcja header() przesyła typ obrazka, MIME, a następnie po przesłaniu informacji o nagłówku zostają wyświetlone dane obrazka imagepng($ob). Jeżeli chcemy zapisać obrazek do pliku musimy się posłużyć następującą funkcją:

imagepng($ob, $nazwapliku);

Końcowe czynności

Po udanym przesłaniu nagłówków do przeglądarki i wyświetleniu obrazka należy zwrócić serwerowy wykorzystane zasoby poprzez funkcje ImageDestroy(), w naszym przypadku ImageDestroy($ob);

Wasze opinie
Wszystkie opinie użytkowników: (0)
Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2017 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System