Moduł GD

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Co to jest

Moduł GD jest to perlowy interfejs do biblioteki gd. Ładuje się on automatycznie dla biblioteki libgd, która służy do tworzenia i manipulowania plikami w formacie PNG. Moduł pozwala na:

Tworzenie obrazu

Poniżej przedstawiony jest prosty przykład tworzenia obrazu przy pomocy modułu GD. Program rysuje czerwony prostokąt z czarnym obramowaniem i zapisuje obrazek do pliku. use GD; # tworzenie nowego obrazu o wymiarach 100x100 $im=new GD::Image(100,100); # przydzielanie kolorów $white=$im->colorAllocate(255,255,255); $black=$im->colorAllocate(0,0,0); $red=$im->colorAllocate(255,0,0); # tworzenie przezroczystego tła $im->transparent($white); $im->interlaced('true') # rysowanie czarnego prostokąta $im->rectangle(0,0,99,99,$black); # i wypełnienie go kolorem czerwonym $im->fill(50,50,$red); # ustawienie binarnego trybu zapisu, co oznacza, ze # obrazek nie bedzie mial zmienianych zadnych sekwencji \n # na typowe dla systemu, tylko zapisze sie dokladnie tak, # jak zostal przygotowany, bit-do-bitu. binmode STDOUT; # obrazek jest konwertowany do formatu PNG i wyświetlany print $im->png; # obrazek zostanie zapisany do pliku open plik,">obrazek.png"; print plik $im->png;

Klasy modułu

Moduł GD składa się z trzech klas.

Klasa GD::Image

Jest to klasa, w której są przechowywane dane dotyczące obrazka. Posiada ona bardzo dużo metod, które pozwalają na różnorakie operacje na obrazku.

Konstruktor
Konstruktorem klasy GD::Image jest funkcja new(). Może być ona wywoływana z różnymi argumentami. Jeżeli argumentami są dwie liczby całkowite zostanie utworzony pusty obrazek o wymiarach określonych tymi danymi. Na przykład wywołanie $myImage = new GD::Image(100,100) || die; tworzy obrazek rozmiaru 100x100 pikseli. Jeżeli argumenty nie zostaną podane, utworzy się obrazek z domyślnym rozmiarem 64x64 pikseli. Alternatywnie, konstruktor może być wywołany przez podanie mu uchwytu do pliku z obrazkiem lub nazwę pliku. Moduł automatycznie rozpoznaje formaty png, jpeg, xpm i gd2. Konstruktor zwraca undef w przypadku niepowodzenia wywołania.

Metody
Poniżej przedstawione są przykłady niektórych funkcji.

$image=GD::Image->trueColor([0,1])
Metoda określa, czy paleta kolorów ma być 8-bitowa (0) czy 24-bitowa.
$image=GD::Image->newFromPng($file,[$truecolor])
Metoda tworzy obrazek pobierając dane z podanego pliku. Przykłady: # 1 open (PNG,"img.png") || die; $myImage = newFromPng GD::Image(\*PNG) || die; close PNG; # 2 $myImage = newFromPng GD::Image('img.png'); Funkcje dla pozostałych formatów wywołuje się identycznie.
$pngdata = $image->png([$compression_level])
Metoda zwraca dane obrazka w formacie png, które mogą być następnie wyświetlane lub zapisywane do pliku. Argument $compression_level jest opcjonalny, może przyjmować wartości od 0 do 9, gdzie 0 oznacza brak kompresji - obrazek będzie miał wysoką jakość, a 9 oznacza największą kompresję i obrazek będzie miał najniższą jakość.
$index = $image->colorAllocate(red,green,blue)
Metoda przydziela kolor określony przez argumenty i zwraca jego indeks w tablicy kolorów. Argumenty mogą przyjmować wartośći od 0 do 255.
$image->setBrush($image)
Linie i różne kształty mogą być rysowane za pomocą wzorca - pędzla. Pędzel jest również obrazkiem, który można tworzyć i którym można manipulować tak jak przy zwykłym obazku.
$image->setThickness($thickness)
Grubość rysowanych linii za pomocą funkcji line(), rectagle(), arc() to 1 piksel. Ta metoda pozwala na zmianę tej grubości.
$image->setPixel($x,$y,$color)
Metoda rysuje piksel w miejscu określonym argumentami $x i $y, o kolorze podanym w $color.
$image->line($x1,$y1,$x2,$y2,$color)
Metoda rysuje linię z punktu ($x1,$x2), w kolorze podanym w zmiennej $color.
$image->rectangle($x1,$y1,$x2,$y2,$color)
Metoda rysuje prostokąt w kolorze określonym w zmiennej $color; ($x1,$y1) oznacza górny lewy róg, ($x2,$y2) prawy dolny róg.
$image->filledRectangle($x1,$y1,$x2,$y2,$color)
Metoda tworzy prostokąt i wypełnia go kolorem $color.
$image->copy($sourceImage,$dstX,$dstY,$srcX,$srcY,$width,$height)
Metoda pozwala na skopiowanie jednego obrazka do drugiego. $dstX i $dstY są parametrami, które określają, w którym miejscu obrazka docelowego ma się pojawić skopiowana część. $srcX i $srcY określają górny lewy róg obrazka źródłowego, a $width i $height określają rozmiar kopiowanej części.
$image->clone()
Cały obrazek może zostać skopiowany za pomocą tej metody.

Klasa GD::Font

Jest to klasa, która zawiera w sobie atrybuty dotyczące informacji o czcionkach. Klasa ta jest używana do operacji na tekstach.

Podstawowe metody:

GD::Font->Small
GD::Font->Large
GD::Font->MediumBold
GD::Font->Tiny
GD::Font->Giant
$font->nchars
nchars zwraca liczbę liter w czcionce.
$font->offset
offset zwraca pierwszą literę w czcionce w kodzie ASCII.
$width=$font->width  $height = $font->height
Zwracane są wysokość i szerokość czcionki.

Klasa GD::Simple

Klasa GD::Simple jest uproszczonym interfejsem do biblioteki GD. Udostępnia ona tak jakby "ołówek", dzięki któremu można rysować linie i różne kształty. Posiada on takie własności jak: fgcolor, czyli kolor linii lub ramek; bgcolor, kolor tła jest kolorem, który wypełnia dany kształt; pensize, określa grubość rysowanych linii i kształtów; position, bieżąca pozycja ołówka na oznaczona współrzędnymi (X,Y);

Metody:

$img->moveTo($x,$y)
Zmiana pozycji kursora, bez rysowania linii podczas tej zmiany. Nową pozycję określają współrzędne ($x,$y).
$img->move($dx,$dy)
Metoda różni się od poprzedniej tylko tym, że kursor jest przesuwany o $dx pikseli w prawo i o $dy pikseli w dół.
$img->lineTo($x,$y) $img->line($dx,$dy)
Metody analogiczne do poprzednich, z tym, że do punktu docelowego jest rysowana linia.
$img->clear
Metoda czyści pole, zamalowując je bieżącym kolorem tła, które ma ołówek.
$img->rectangle($x1,$y1,$x2,$y2)
Metoda rysuje prostokąt. ($x1,$y1) oznacza lewy górny róg, a ($x2,$y2) prawy dolny róg prostokąta. Kolor ramki jest ustalony przez fgcolor, a kolor wypełnienia przez bgcolor.
W Klasie DG::Simple znajduje się jeszcze kilka innych metod. Wszystkie one są opisane na stronie: http://search.cpan.org/~lds/GD-2.35/GD/Simple.pm

Dodatkowe informacje

Informacje na temat modułu GD można znaleźć na stronie http://search.cpan.org/~lds/GD-2.35/GD.pm

Autor opracowania

A.Ł.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.