B Biblioteka GD. B.1 Koncepcja biblioteki GD.

Podobne dokumenty
C Biblioteka G2. C.1 Koncepcja biblioteki G2.

Kurs WWW. Paweł Rajba.

Szybkie tworzenie grafiki w GcIde

Allegro5 3/x. Przykład wklejamy go do dev'a zamiast kodu domyślnego dal programu z allegro i kompilujemy.

7. Dynamiczne generowanie grafiki

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Druga aplikacja Prymitywy, alpha blending, obracanie bitmap oraz mały zestaw przydatnych funkcji wyświetlających własnej roboty.

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

8. Dynamiczne generowanie grafiki, cz. 2

Obsługa programu Paint materiały szkoleniowe

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Formaty obrazów rastrowych biblioteki PBM

Jak dodać własny szablon ramki w programie dibudka i dilustro

Rysowanie punktów na powierzchni graficznej

Obsługa programu Paint. mgr Katarzyna Paliwoda

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Przewodnik po soczewkach

Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy

Opis Edytora postaci Logomocji

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Do obsługi plików BMP należy stworzyć klasę przechowującą zawartość obrazu i udostępniającą następujące metody:

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Tworzenie i edycja dokumentów w aplikacji Word.

Program współpracuje z : Windows XP, Powerdraft 2004, v8, XM, Microstation 2004, v8, XM.

Maskowanie i selekcja

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

Wykład VII PASCAL - grafika;

Adobe Photoshop lab. 3 Jacek Wiślicki, 1. Napisy (c.d.) Ogień Miód Metal Aqua...

Wstawianie nowej strony

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

ECDL/ICDL CAD 2D Moduł S8 Sylabus - wersja 1.5

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Instrukcja przygotowania projektów do druku

Inkscape. Menu. 1 SVG (ang. Scalable Vector Graphics) uniwersalny format dwuwymiarowej, statycznej i

Tematy lekcji zajęć komputerowych klasa 5b grupa 1 i grupa 2

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Cała prawda o plikach grafiki rastrowej

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0

Ćwiczenia z grafiki komputerowej 4 PRACA NA WARSTWACH. Miłosz Michalski. Institute of Physics Nicolaus Copernicus University.

Wstęp do GIMP wycinanie obiektu z obrazka, projekt napisu. Rozpoczynamy prace w GIMP-e

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2016 CZĘŚĆ PRAKTYCZNA

KARTA INFORMACYJNA Z INFORMATYKI DO KLASY 4. Imię i nazwisko ucznia:

Kolory elementów. Kolory elementów

1 Temat: Wprowadzenie do biblioteki OpenCV

Tematy lekcji informatyki klasa 4a grudzień 2011

Wizualne systemy programowania. Wykład 11 Grafika. dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD

Zasady ekspozycji i reprodukcji znaku

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

Photoshop. Tworzenie tekstu

Podstawy Informatyki Wykład V

Zmiana kolorowego obrazu na czarno biały

FORMATY PLIKÓW GRAFICZNYCH

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 6.0

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Formatowanie komórek

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Podstawy programowania skrót z wykładów:

Pomorski Czarodziej 2016 Zadania. Kategoria C

Znak wersja podstawowa

Znak 3.2. Pole ochronne. Minimalna wielkość znaku. Znak nie posiada własnego tła, może być stosowany bezpośrednio na kolorowych tłach bądź zdjęciach.

CalendarGenerator v0.1 - instrukcja obsługi

Pliki. Informacje ogólne. Obsługa plików w języku C

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

4. Rysowanie krzywych

1. Wprowadzanie danych z klawiatury funkcja scanf

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

KATEGORIA OBSZAR WIEDZY

AutoCAD LT praca na obiektach rastrowych i nakładanie barw z palety RGB na rysunki.

Lab 9 Podstawy Programowania

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

JSLib 4.1 Dokumentacja

budowa i zasady użycia logo Fundacji Orange

Wykorzystanie grafiki wektorowej do tworzenia elementów graficznych stron i prezentacji

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

KATEGORIA OBSZAR WIEDZY

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Użycie przestrzeni papieru i odnośników - ćwiczenie

SYLABUS ECCC MOD U Ł : C S M2 GR A F I K A KO M P U T E R O W A PO Z I O M: PO D S T A W O W Y (A)

Zaznaczanie komórek. Zaznaczenie pojedynczej komórki polega na kliknięciu na niej LPM

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Zajęcia 4 procedury i funkcje

KRYTERIA OCENIANIA Z ZAJĘĆ KOMPUTEROWYCH W KLASIE IV

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

Obsługa mapy przy użyciu narzędzi nawigacji

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Opis środowiska Scratch

Dodatek A. Palety. QuarkXPress 4.1. Projekty praktyczne. Podstawowe palety

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Scenariusz lekcji. Scenariusz lekcji. opisać działanie narzędzi przybornika. korzystać z Edytora postaci programu Logomocja;

Transkrypt:

B Biblioteka GD. J a c e k Ta r a s i u k B.1 Koncepcja biblioteki GD. W odróżnieniu od wielu bibliotek graficznych biblioteka GD nie pozwala na tworzenie i obsługę grafiki ekranowej. Biblioteka GD jest specjalizowanym zestawem funkcji umożliwiającym tworzenie skomplikowanych obrazów graficznych na drodze czysto programistycznej. Utworzone obrazy można zapisać do pliku w jednym z dostępnych formatów graficznych. Standardowo biblioteka ta przystosowana jest do łączenia z językiem C i C++. Jej atrakcyjność podnosi fakt, że została włączona jako standardowa biblioteka funkcji graficznych w języku PHP od wersji 4.3.0. Dodatkowe informacje na temat biblioteki oraz sposobów jej łączenia z innymi językami można znaleźć na stronie: http://www.boutell.com/gd/ Biblioteka GD jest bardzo obszerna. W poniższym zestawieniu omówiono większość, ale nie wszystkie funkcje w niej dostępne. Po szczegóły odsyłam na podaną wyżej stronę internetową. Biblioteka GD. B-1

Tworzenie i likwidowanie bitmapy. B.2 Tworzenie i likwidowanie bitmapy. gdimageptr gdimagecreate(sx, sy) Tworzy bitmapę, opartą o paletę kolorów, o rozmiarach sx na sy. Dopuszczalna liczba kolorów to 256. Pierwszy kolor jaki zostanie zdefiniowany dla tej bitmapy będzie kolorem tła. gdimageptr gdimagecreatetruecolor(sx, sy) Tworzy bitmapę w trybie TrueColor o rozmiarach sx na sy. Tuż po stworzeniu bitmapa wypełniona jest kolorem czarnym. gdimagedestroy(gdimageptr im) Niszczy bitmapę i zwalnia przypisaną jej pamięć. void* gdimagepngptr(gdimageptr im, int *size) Alokuje pamięć dla bitmapy. gdfree(void *ptr) Zwalnia pamięć przydzieloną bitmapie. B.3 Wczytywanie i zapis bitmapy. gdimageptr gdimagecreatefromjpeg(file *in) Wczytuje obrazek z pliku w formacie JPG. Zwraca wskaźnik do obrazka lub NULL jeśli nie udało się go wczytać poprawnie. gdimageptr gdimagecreatefrompng(file *in) Wczytuje obrazek z pliku w formacie PNG. Zwraca wskaźnik do obrazka lub NULL jeśli nie udało się go wczytać poprawnie. gdimageptr gdimagecreatefromgif(file *in) Wczytuje obrazek z pliku w formacie GIF. Zwraca wskaźnik do obrazka lub NULL jeśli nie udało się go wczytać poprawnie. void gdimagejpeg(gdimageptr im, FILE *out, int quality) Zapisuje obrazek do pliku w formacie JPG. Parametr quality określa jakość zapisanego obrazka, a co za tym idzie również stopień jego kompresji. Im bliżej zera tym lepsza kompresja i gorsza jakość. Im bliżej 100 tym lepsza jakość i mniejsza kompresja. Biblioteka GD. B-2

Wczytywanie i zapis bitmapy. void gdimagepng(gdimageptr im, FILE *out) Zapisuje obrazek do pliku w formacie PNG. void gdimagegif(gdimageptr im, FILE *out) Zapisuje obrazek do pliku w formacie GIF. W przypadku obrazów w trybie TrueColor zapisany obrazek zostanie przekonwertowany do trybu 256 kolorów. Konwersja nie wpływa na obrazek znajdujący się w pamięci. gdimageinterlace(gdimageptr im, int interlace) Funkcja ustawia tryb interlace zapisu obrazu. Obrazek taki w wielu aplikacjach (np. w przeglądarkach internetowych) wczytywany będzie z tzw. przeplotem. int gdimagegetinterlaced(gdimageptr im) Informuje czy dla danego obrazka ustawiono tryb interlace. Biblioteka GD umożliwia zapis i odczyt w formatach nie opisanych powyżej. Szczegóły można znaleźć w dokumentacji biblioteki. B.4 Funkcje rysujące. void gdimagesetpixel(gdimageptr im, int x, int y, int color) Stawia punkt w zadanym kolorze na zadanej pozycji. void gdimageline(gdimageptr im, int x1, int y1, int x2, int y2, int color) Rysuje linię od (x1,y1) do (x2,y2). void gdimagedashedline(gdimageptr im, int x1, int y1, int x2, int y2, int color) Rysuje linię przerywaną. Zaleca się nie używać tej funkcji. void gdimagepolygon(gdimageptr im, gdpointptr points, int pointstotal, int color) Rysuje łamaną w zadanym kolorze. Współrzędne wierzchołków łamanej umieszczone są w tablicy points. Na przykład: gdpoint punkty[3]; points[0].x = 50; points[1].x = 99; points[2].x = 0; points[0].y = 0; points[1].y = 99; points[2].y = 99; gdimagepolygon(im,points,3,white); Biblioteka GD. B-3

Funkcje rysujące. void gdimagerectangle(gdimageptr im, int x1, int y1, int x2, int y2, int color) Rysuje w zadanym kolorze prostokąt, którego lewy górny narożnik ma współrzędną (x1,y1) a prawy dolny (x2,y2). void gdimagefilledpolygon(gdimageptr im, gdpointptr points, int pointstotal, int color) Rysuje zamkniętą łamaną wypełnioną zadanym kolorem. void gdimagefilledrectangle(gdimageptr im, int x1, int y1, int x2, int y2, int color) Rysuje prostokąt wypełniony zadanym kolorem. void gdimagearc(gdimageptr im, int cx, int cy, int w, int h, int s, int e, int color) Rysuje w zadanym kolorze fragment łuku elipsy. Środek elipsy znajduje się w punkcie o współrzędnych (cx,cy). Parametry w i h określają szerokość i wysokość elipsy. Parametry s i e określają początek i koniec rysowania łuku i wyrażają się w stopniach. Zero znajduje się na godzinie 3, 90 stopni na godzinie 6, a 270 na 12. void gdimagefilledarc(gdimageptr im, int cx, int cy, int w, int h, int s, int e, int color, int style) Rysuje fragment łuku elipsy wypełniony zadanym kolorem. Znaczenie parametrów jak w funkcji gdimagearc. Parametr style może być sumą bitową następujących wartości: gdarc łączy początek i koniec łuku wygładzając punkty połączenia gdchord łączy początek i koniec łuku prostą gdpie to samo co gdarc gdnofill oznacza, że element nie zostanie wypełniony kolorem gdedged powoduje połączenie początku i końca łuku ze środkiem elipsy Parametry gdarc i gdchord nie mogą występować jednocześnie. void gdimagefilledellipse(gdimageptr im, int cx, int cy, int w, int h, int color) Rysuje fragment elipsy wypełniony zadanym kolorem. Znaczenie parametrów jak w funkcji gdimagearc. void gdimagefilltoborder(gdimageptr im, int x, int y, int border, int color) Wypełnia obszar ograniczony kolorem border zadanym kolorem color. Wypełnianie Biblioteka GD. B-4

Funkcje rysujące. rozpoczyna się od punktu o współrzędnych (x,y). void gdimagesetantialiased(gdimageptr im, int c) Ustawia kolor c jako aktualny kolor (kolor pióra) dla którego przy rysowaniu będzie wykonywany antyaliasing. void gdimagesetantialiaseddontblend(gdimageptr im, int c) Ustala kolor c (kolor tła) z którym nie będzie wykonywany antyaliasing. void gdimagefill(gdimageptr im, int x, int y, int color) Wypełnia region kolorem color poczynając od punktu (x, y). Region tworzą wszystkie przyległe punkty o tym samym kolorze co punkt startowy. void gdimagesetbrush(gdimageptr im, gdimageptr brush) Tworzy pędzel na podstawie zadanego obrazka im. Po ustawieniu pędzla, w każdej funkcji rysującej możemy użyć zamiast normalnego koloru opcji gdbrushed, na przykład: gdimageline(im, 0, 0, 99, 99, gdbrushed); void gdimagesettile(gdimageptr im, gdimageptr tile) Tworzy wzorzec wypełniania obszarów na podstawie obrazka im. Po ustawieniu wzorca, we wszystkich funkcjach wypełniających obszary zamiast normalnego koloru można użyć opcji gdtiled, na przykład: gdimagefilledrectangle(im, 25, 25, 75, 75, gdtiled); void gdimagesetstyle(gdimageptr im, int *style, int stylelength) Ustala styl rysowanych linii. Parametr style zawiera tablicę kolorów jakimi będą wypełniane kolejne punkty linii. Parametr stylelength podaje długość wzorca linii. Poniższy przykład definiuje linię której punkty będą kolejno: niebieski, dwa czerwone i dwa w kolorze tła. int styledashed[5]; styldashed[0]=blue; styldashed[1]=red; styldashed[2]=red; styldashed[3]=gdtransparent; styldashed[4]=gdtransparent; gdimagesetstyle(im, styledashed, 5); gdimageline(im, 0, 99, 0, 99, gdstyled); Biblioteka GD. B-5

Funkcje rysujące. void gdimagesetthickness(gdimageptr im, int thickness) Ustala grubość rysowanych linii. void gdimagealphablending(gdimageptr im, int blending) Przełącza pomiędzy trybem mieszania kolorów (blending=1), a trybem nadpisywania kolorów (blending=0). void gdimagesavealpha(gdimageptr im, int saveflag) Przełącza pomiędzy trybem zapisywania z uwzględnieniem kanału alfa (saveflag=1) lub bez kanału alfa (saveflag=0). void gdimagesetclip(gdimageptr im, int x1, int y1, int x2, int y2) Ustala wierzchołki prostokąta obcięcia. void gdimagegetclip(gdimageptr im, int *x1p, int *y1p, int *x2p, int *y2p) Zwraca wierzchołki prostokąta obcięcia. int gdimagegetpixel(gdimageptr im, int x, int y) Zwraca wartość koloru w punkcie o podanej współrzędnej. int gdimageboundssafe(gdimageptr im, int x, int y) Zwraca wartość 1 gdy punkt (x, y) znajduje się wewnątrz obszaru obcięcia i 0 gdy poza nim. int gdimagesx(gdimageptr im) Zwraca współrzędną x położenia pióra. int gdimagesy(gdimageptr im) Zwraca współrzędną y położenia pióra. B.5 Operacje tekstowe. void gdimagecharup(gdimageptr im, gdfontptr font, int x, int y, int c, int color) Drukuje pojedynczy znak c obrócony o 90. font jest wskaźnikiem do struktury Biblioteka GD. B-6

Operacje tekstowe. definiującej czcionkę. Standardowo z biblioteką dostarczanych jest pięć fontów: gdfonttiny, gdfontsmall, gdfontmediumbold, gdfontlarge i gdfontgiant. Należy pamiętać o dołączeniu stosownego nagłówka #include... ("gdfontt.h", "gdfonts.h", "gdfontmb.h", "gdfontl.h", "gdfontg.h"). void gdimagestring(gdimageptr im, gdfontptr font, int x, int y, unsigned char *s, int color) Wypisuje w punkcie o współrzędnych (x,y) przy użyciu koloru color tekst s wykorzystując czcionkę, do której wskaźnikiem jest font. void gdimagestringup(gdimageptr im, gdfontptr font, int x, int y, unsigned char *s, int color) Wypisuje w punkcie o współrzędnych (x,y) przy użyciu koloru color tekst s wykorzystując czcionkę, do której wskaźnikiem jest font. Wypisany tekst obrócony jest pod kątem 90 stopni. void gdimagestring16(gdimageptr im, gdfontptr font, int x, int y, unsigned short *s, int color) Wykorzystywane przy drukowaniu napisów z 16-sto bitowym kodowaniem znaków. void gdimagestringup16(gdimageptr im, gdfontptr font, int x, int y, unsigned short *s, int color) Wykorzystywane przy drukowaniu napisów z 16-sto bitowym kodowaniem znaków. char *gdimagestringft(gdimageptr im, int *brect, int fg, char *fontname, double ptsize, double angle, int x, int y, char *string) Drukuje tekst z wykorzystaniem czcionki typu True Type. fontname wskazuje pełną ścieżkę wraz z nazwą pliku zawierającego żądaną czcionkę. fg określa kolor czcionki, a ptsize jej rozmiar. Tekst może być drukowany pod kątem angle do poziomu. Jeśli podczas wywołania im=null to w tablicy int brect[8] znajdą się współrzędne narożników prostokąta, który zająłby wydrukowany tekst. Tekst będzie wydrukowany z opcją antyaliasingu. Aby ją wyłączyć wystarczy podać wartość koloru poprzedzoną znakiem minus. B.6 Operacje dotyczące kolorów. int gdimagecolorallocate(gdimageptr im, int r, int g, int b) Definiuje nowy kolor w palecie kolorów. Zwraca indeks koloru w palecie. W przypadku Biblioteka GD. B-7

Operacje dotyczące kolorów. bitmap TrueColor zwraca dwubajtowy kod koloru. Dla trybu 256 kolorowego pierwsze wywołanie funkcji definiuje kolor tła. int gdimagecolorallocatealpha(gdimageptr im, int r, int g, int b, int a) Definiuje nowy kolor w palecie kolorów z uwzględnieniem kanału alfa. Zwraca indeks koloru w palecie. int gdimagecolorclosest(gdimageptr im, int r, int g, int b) Zwraca indeks koloru najbliższego do podanych wartości. int gdimagecolorclosestalpha(gdimageptr im, int r, int g, int b, int a) Zwraca indeks koloru najbliższego do podanych wartości z uwzględnieniem kanału alfa. int gdimagecolorclosesthwb(gdimageptr im, int r, int g, int b) Zwraca indeks koloru o zbliżonym hue i najlepiej dopasowanym stopniu jasności. int gdimagecolorexact(gdimageptr im, int r, int g, int b) Zwraca indeks koloru określonego parametrami r g b. Jeśli taki kolor nie został dotychczas określony zwraca -1. int gdimagecolorresolve(gdimageptr im, int r, int g, int b) Funkcja sprawdza czy kolor już istnieje, jeśli nie to stara się go zaalokować, jeśli jej się to nie uda to szuka najbliższego koloru. W efekcie zawsze zwraca jakiś indeks koloru. int gdimagecolorresolvealpha(gdimageptr im, int r, int g, int b, int a) Funkcja działa tak samo jak gdimagecolorresolve tylko uwzględnia kanał alfa. int gdimagecolorstotal(gdimageptr im) Funkcja zwraca liczbę zdefiniowanych kolorów. Funkcja działa tylko dla trybu z wykorzystaniem tablicy kolorów i nie powinna być wywoływana dla obrazów w trybie TrueColor. int gdimagered(gdimageptr im, int c) Zwraca składową czerwoną koloru c. Biblioteka GD. B-8

Operacje dotyczące kolorów. int gdimagegreen(gdimageptr im, int c) Zwraca składową zieloną koloru c. int gdimageblue(gdimageptr im, int c) Zwraca składową niebieską koloru c. int gdimagegettransparent(gdimageptr im) Zwraca indeks koloru przezroczystego. Jeśli taki nie został zdefiniowany zwraca -1. void gdimagecolordeallocate(gdimageptr im, int color) Zwalnia miejsce w palecie kolorów. void gdimagecolortransparent(gdimageptr im, int color) Ustala kolor o indeksie color jako przezroczysty. Użycie jako parametru color wartości -1 spowoduje, że żaden kolor w palecie nie będzie przezroczysty. void gdimagetruecolortopalette(gdimageptr im, int ditherflag, int colorswanted) Funkcja konwertuje bitmapę z trybu TrueColor do trybu paletowego o liczbie kolorów ustawionej w parametrze colorswanted. Jeśli ditherflag jest ustawiony na 1 to kolory spoza palety będą przybliżone z wykorzystaniem ditheringu. B.7 Kopiowanie i zmiana rozmiarów. void gdimagecopy(gdimageptr dst, gdimageptr src, int dstx, int dsty, int srcx, int srcy, int w, int h) Kopiuje na obrazek dst w miejsce o współrzędnych (dstx,dsty) fragment z obrazka src z miejsca o współrzędnych (srcx,srcy). Kopiowany fragment ma szerokość w i wysokość h. void gdimagecopyresized(gdimageptr dst, gdimageptr src, int dstx, int dsty, int srcx, int srcy, int destw, int desth, int srcw, int srch) Kopiuje fragment obrazka src na obrazek dst i zmienia rozmiary kopiowanego fragmentu. Kopiowany fragment ma szerokość srcw i wysokość srch, a kopiowany jest w obszar o szerokości dstw i wysokości dsth. Pozostałe parametry jak w funkcji Biblioteka GD. B-9

Kopiowanie i zmiana rozmiarów. gdimagecopy. void gdimagecopyresampled(gdimageptr dst, gdimageptr src, int dstx, int dsty, int srcx, int srcy, int destw, int desth, int srcw, int srch) Kopiuje fragment obrazka src na obrazek dst i zmienia rozmiary kopiowanego fragmentu. Przy zmianie rozmiarów wykorzystywane są algorytmy interpolacyjne. Parametry jak w funkcji gdimagecopyresized. void gdimagecopyrotated(gdimageptr dst, gdimageptr src, double dstx, double dsty, int srcx, int srcy, int srcw, int srch, int angle) Kopiuje fragment obrazka src na obrazek dst. Kopiowany fragment jest obracany o kąt angle. Pozostałe parametry jak w funkcji gdimagecopy. void gdimagecopymerge(gdimageptr dst, gdimageptr src, int dstx, int dsty, int srcx, int srcy, int w, int h, int pct) Kopiuje fragment obrazka src na obrazek dst. Fragment nakładany mieszany jest z tłem obrazka dst w proporcjach określonych przez parametr pct. Na przykład pct=70 oznacza, że 70% koloru pochodzić będzie z obrazka src a 30% z dst. Pozostałe parametry jak w funkcji gdimagecopy. void gdimagecopymergegray(gdimageptr dst, gdimageptr src, int dstx, int dsty, int srcx, int srcy, int w, int h, int pct) Działa podobnie jak gdimagecopymerge z tą różnicą, że punkty obrazu dst przed połączeniem zamieniane są na odcienie szarości. W efekcie nałożenie obrazu powoduje modyfikację jasności fragmentu z obrazka src poprzez jasność punktów z obrazka dst. Kolory się nie zmieniają. void gdimagepalettecopy(gdimageptr dst, gdimageptr src) Kopiuje paletę kolorów z obrazka src do dst. Biblioteka GD. B-10

Funkcje dodatkowe. B.8 Funkcje dodatkowe. void gdimagesquaretocircle(gdimageptr im, int radius) Wykonuje transformację układu prostokątnego do układu biegunowego. Zamienia obrazek prostokątny na kwadratowy obrazek o rozmiarach 2*radius w taki sposób, że współrzędne x-owe obrazka zamieniane są na kąt θ, a współrzędne y-owe na odległość od środka układu. void gdimagesharpen(gdimageptr im, int pct) Wyostrza obrazek. Stopień wyostrzenia reguluje parametr pct. Powyższe zestawienie obejmuje większość, ale nie wszystkie funkcje dostępne w bibliotece GD. Dokumentacja biblioteki dostępna pod adresem: http://www.boutell.com/gd/ jest bardzo obszerna i zawiera wiele dodatkowych informacji oraz przykładów użycia różnych funkcji. Warto się z nią zapoznać. B.9 Jak kompilować programy z wykorzystaniem biblioteki GD. Kompilacja programów korzystających z biblioteki GD zostanie opisana na przykładzie środowiska Dev-C++. W innych środowiskach powinna wyglądać podobnie. 1. W katalogu c:\dev-cpp\include tworzymy nowy katalog GD, do którego przekopiowujemy wszystkie pliki nagłówkowe biblioteki czyli: config.h, entities.h, gd.h, gdcache.h, gdfontg.h, gdfontl.h, gdfontmb.h, gdfonts.h, gdfontt.h, gdfx.h, gdhelpers.h, gd_io.h, jisx0208.h, wbmp.h. 2. Do katalogu c:\dev-cpp\lib przekopiowujemy bibliotekę libbgd.a. 3. Do katalogu c:\windows\system32 przekopiowujemy bibliotekę bgd.dll. 4. W opcjach projektu w zakładce [Parametry] w polu [Konsolidator] wpisujemy: -lbgd. Biblioteka GD. B-11

biblioteki GD. Wprowadzenie do grafiki komputerowej v.2008 Jak kompilować programy z wykorzystaniem 5. W opcjach projektu w zakładce [Pliki/Katalogi] w polu [Katalogi plików nagłówkowych] wpisujemy: c:\dev-cpp\include\gd. Teraz już programy powinny się kompilować bez problemów. B.10 Przykładowe programy. Do skryptu dołączono sześć programów demonstracyjnych. GD-2pic Tworzy prosty obrazek i zapisuje w dwóch formatach. GD-Antia Porównanie grafiki z i bez antyaliasingu. GD-Arc Różne sposoby działania funkcji gdimagefilledarc. GD-Draw Wykorzystanie pędzla i wzorców wypełnienia. GD-Tcolor Praca w trybie TrueColor. GD-Copy Wczytywanie grafiki, funkcje tekstowe oraz kopiowanie fragmentów grafiki. Niniejszy tekst jest fragmentem skryptu do wykładu: Praktyczne wprowadzenie do grafiki komputerowej Skrypt ten w całości podlega licencji Creative Commons. Szczegółowy opis licencji znajduje się w przedmowie, dostępnej wraz z najnowszą wersją skryptu na stronie: http://novell.ftj.agh.edu.pl/~tarasiuk/dydaktyka/gfk/gfk.html Biblioteka GD. B-12