class5 , czyli co potrafi GD

class5.picassoOstatnio , zupełnie przez przypadek trafiłem na dosyć projekt, o którym początkowo pisać nie chciałem. Mowa o class5.
Czym ów twór jest? Pozwolę sobie zacytować fragment dokumentacji:

“Jest to zbiór klas przeznaczonych dla skryptowego języka programowania PHP służącego do tworzenia stron internetowych, wykonywanych po stronie serwera. ”

Pominę tutaj okrojenie zastosowań PHP (który może służyć do naprawdę wielu rzeczy - kiedyś do tematu jeszcze wrócę).

“Ponieważ zbiór bibliotek wykorzystuje całkowicie nowy model programowania obiektowego dostępny w PHP 5, który jest nie jest zarazem w pełni kompatybilny z poprzednimi wersjami PHP, wymaga do poprawnego działania piątej edycji tego języka.”

Tutaj chciałem dodać tylko jedną rzecz - ów “nowy model programowania obiektowego” to znany od baaardzo dawna model na przykład z C++. Choć wciąż mocno okrojony. Ale o tym , czego jeśli chodzi o obiektowość brakuje PHP jeszcze kiedyś napiszę - jest o czym ;).

Wracając do meritum  - class5 . Jest to zbiór następujących klas:

 

i… tyle wiadomo na ich temat. Wszystko inne co można powiedzieć opiera się na dokumentacji oraz plikach testowych umieszczonych na stronie autora. Nie mogę więc powiedzieć niczego na temat wydajności, lub jakości kodu. Tak więc nie mogę powiedzieć niczego co jest naprawdę ważne. To pierwszy powód dla którego nie chciałem pisać o tej klasie. Jaki jest drugi? Na podstawie dokumentacji oraz testów odnoszę wrażenie, że te wszystkie klasy to w wiekszości realizowanie prostych funkcji, które równie prosto możemy osiągnąć bez zewnętrznych klas. Oczywiście nie twierdzę , że tak być nie może. Ale klasa z dwoma metodami:

(oraz trzecią, wyświetlającą wersje klasy) gdzie jedyną fukncjonalnością całej klasy to parsowanie HTTP_USER_AGENT oraz HTTP_REFERER . Całe szczęście są też ciekawsze klasy - jak na przykład Class5.Picasso. I to właśnie o niej będzię reszta wpisu.

Ale nie dlatego, że klasa jest inowacyjna (podobne klasy znajdziecie tutaj), lub wyjątkowo wydajna (wciąż nie została nigdzie udostępniona). Klasa ta (a raczej przykłady przedstawione przez autora) pokazują, jakie możliwości ma biblioteka GD (którą można stosować nie tylko w PHP - została ona napisana w C). I właśnie po to powstał ten wpis.

Jeśli chodzi o PHP to większość osób od jakiegoś czasu stosuje alternatywę - imagemagick . Przyznam, że dawno nie robiłem testów i nie wiem jak obecnie wygląda kwestia wydajności. Prawdopodobnie niewiele się zmieniło i IM wciąż jest o wiele szybszy od GD. Jednak do niektórych zastosowań GD jest na pewno wystarczające. Dodatkowo występuje kwestia dostępności imagemagick’a. Czy warto szukać serwera z IM? A może starczy GD? Oceńcie sami.

class5.picasso

 

  • Obramowanie oraz filtry [klik]

class5.picasso

 

  • Odbicie obrazu

class5.picasso

 

  • Czcionki truetype + cieniowanie  obsługa antyaliasingu.

class5.picasso

 

  • Pozycjonowanie tekstu oraz marginesy

 class5.picasso

 

  • Wtapianie,  przeźrocza, efekt refleksu

class5.picasso

 

  • Generowanie przycisków

class5.picasso

 

  • Oraz coś , co naprawdę mi się podoba - ładna ramka ;)

class5.picasso

class5.picasso

 

  • Oczywiście ów ramka to nie wytwór GD czy samej klasy po prostu pliczek z ramką - proste, ale naprawdę bardzo ładne - brawa dla autora.

class5.picasso

 Oczywiście to tylko przykłady bez kodu - ten możecie znaleźć na stronie autora. Gdy autor udostępni pliki klasy, napiszę coś więcej.


About this entry