Moduł GD
Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowaCo 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:
- rysowanie linii, wielokątów, okręgów oraz wypełnianie ich kolorem,
- przezroczystość i przeplatanie,
- używanie symbolicznych nazw czcionek, jak np. "helvetica:italic",
- używanie symbolicznych nazw kolorów, jak np. "green"
- zapisywanie plików w formacie png, gif, jpeg i xbm
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.
- $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
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:
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.Ł.