Tagi: animowany, gd, gif, gifencoder, php, programowanie www
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.
$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.
![]()
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ć?
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.
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”);
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