02 08 2009
Opublikowano w Programowanie  |  4 Komentarzy
Tagi: , , , , ,

Co potrafi GD

GD jest biblioteką umożliwiającą pracę z grafiką z poziomu języka PHP. Posiada szereg możliwości począwszy od skalowania, kadrowania, filtrowania i skończywszy na zapisie w różnych formatach. A co z animacjami? Krucho. Po prostu nie zostały zaimplementowane. Ale głowa do góry jest proste rozwiązanie.

GIFEncoder

Brak obsługi animacji w bibliotece GD może okazać się czasami ograniczający. Naprzeciw z pomocą wychodzi dodatkowa klasa GIFEncoder. Specyfikacja formatu umożliwiła autorowi stworzenie programu łączącego wiele grafik (*.gif) w jeden animowany obrazek. Możemy zarówno wykorzystać pliki zapisane na dysku jak i te stworzone dynamicznie.

Klasę można pobrać z serwisu PHP Classes. Jako że rejestracja jest zniechęcająca oto i alternatywne źródło. Poniżej zamieszczam przykład użycia.

$frames = array();
$framed = array();

$colors = array(array(255,0,0),array(0,0,255));
foreach ($colors as $color)
{
    ob_start();
    $image = ImageCreate(50, 50); //width, height
    $temp = ImageColorAllocate($image,$color[0] ,$color[1] ,$color[2]);
    ImageFill($image,1,1,$temp);
    imagegif($image);
    imagedestroy($image);
    $frames[] = ob_get_clean();
    $framed[] = 100;//time
}

$gif = new GIFEncoder($frames,$framed,0,2,0, 0, 0,0,"bin");
Header('Content-type:image/gif');
echo $gif->GetAnimation();


Mój własny animowany baner

Wykorzystując opisaną klasę stworzyłem baner promujący moją stronę. Ważna była dla mnie estetyczna prosta szata graficzna. Nie ma fajerwerków. Jest to celowy zabieg. Nie chciałem dekoncentrować czytelników. Do tchnięcia życia w całość wystarczy skromna animacja. Na banerze umieszczam losowy wpis z bloga co ma odszukać potencjalnych zainteresowanych. Całość jest buforowania i aktualizuje się raz na 12 godzin.

4 komentarzy:

26-04-2010 16:04 #

Jak tworzyć poszczególne klatki, gdzie je umieszczać w kodzie z tego posta? W tym “alternatywnym linku” jest kilka plików, którego trzeba użyć?

27-04-2010 16:44 #

Hej. Z danej witryny potrzebujesz tylko GIFEncoder.class.php. Sama animacja składa się z wielu obrazków. W przykładowym kodzie, który zamieściłem znajdują się dwa obrazki-tła o różnych kolorach. Zwróć uwagę na tablicę colors oraz uzupełnienie framed oznaczające jak długa dana klatka ma być wyświetlana. Jeśli nadal to wszystko wydaje Ci się zakręcone polecam tutorial dotyczący GD.

03-05-2010 15:16 #

A co oznaczają te liczby (0,2,0,0,0,0) w poniższej linijce? GIFEncoder($frames,$framed,0,2,0, 0, 0,0,”bin”);

04-05-2010 16:47 #

Szczerze nie analizowałem wszystkich parametrów konstruktora. Nie potrafię Ci od tak odpowiedzieć na to pytanie. Odsyłam Cię do źródła a tutaj wklejam nazwy konkretnych parametrów: GIFEncoder($GIF_src, $GIF_dly, GIF_lop, $GIF_dis, $GIF_red, $GIF_grn, $GIF_blu, $GIF_ofs, $GIF_mod)


Prześlij komentarz
Prześlij komentarz
Imię i nazwisko *
E-mail *
Strona internetowa