ein Kapitel zurück                                           ein Kapitel weiter

Wie man ein neues Image erstellt haben sie bereits im Kapitel zuvor kennengelernt.

 /*image initialisieren*/
 gdImagePtr image;
 /*Wir erzeugen ein Image mit 100x100 Pixel*/
 image=gdImageCreate(100,100);

Nun ist es auch möglich bereits erstellte Grafiken oder Bilder einzulesen. Nehmen wir gleich unser Bild vom Beispiel zuvor.......



Bild Nummer 1


gdImagePtr image;
FILE *png;
png = fopen("./bild1.png","rb");
if(png==NULL) { /*Fehler*/ exit(0); }
image = gdImageCreateFromPng(png);
fclose(png);

Wir öffnen unser Image ganz normal mit einem Stream und erstellen anschließend ein neues Image mittels.........

image = gdImageCreateFromPng(png);

Dieses Image können wir nun wieder nach belieben bearbeiten. Denn Filehandle sollten anschließend wieder schließen, da dies nicht automatisch geschieht. Wollen wir nun bild1.png weiterbearbeiten....

/*Download:gd2.c*/
#include <stdio.h> #include <gd.h> int main() { /*image initialisieren*/ gdImagePtr image; FILE *png; int black, white, red, blue, yelow; png = fopen("./bild1.png","rb"); if(png==NULL) { /*Fehler*/ exit(0); } image = gdImageCreateFromPng(png); fclose(png); /*Speicher für die Farben allozieren*/ white=gdImageColorAllocate(image,0,0,0); /*Weiss*/ black=gdImageColorAllocate(image,255,255,255); /*Schwarz*/ red =gdImageColorAllocate(image,255,0,0); /*rot*/ blue =gdImageColorAllocate(image,0,0,255); /*blau*/ yelow=gdImageColorAllocate(image,255,255,0); /*gelb*/ gdImageRectangle(image,25,25,75,75,black); gdImageFill(image, 45,45, black); gdImageFill(image, 55,55, black); gdImageFill(image, 45,55, white); gdImageFill(image, 55,45, white); png = fopen("bild2.png","wb"); gdImagePng(image,png); fclose(png); gdImageDestroy(image); return 0; }

Und so siehts aus :

Bild Nummer 2


Übersetzen sie das ganze wieder wie gewohnt......

gcc -o image image.c -lgd

Weitere Möglichkeiten haben sie mittels......

jpeg=fopen("./image.jpeg", "rb");
image = gdImageCreateFromJpeg(jpeg);
if(image==NULL) { exit(0); }
fclose(jpeg);

...was genauso angewendet werden kann wie das Beispiel eben. Nur ist das Problem das die neuere GD-Bibliothek aus Lizensgründen keine Gif-Format mehr unterstützt. Benötigen sie dieses Format, so sollten sie sich eine ältere GD-Library herunterladen.

Weiter Möglichkeiten die ebenso wie gdImageCreateFromJpeg funktionieren sind....

gdImageCreateFromXbm(xbm)   //X-Bitmap-Format
gdImageCreateFromWmp(wbmp)  //WBitmap
gdImageCreateFromGd(gd)     //gd-Format
gdImageCreateFromGd2(gd2)   //gd2-Format

Alle erwarten ebenso einen Stream. Vom Format *.gd kann ich abraten, da die Datei nicht komprimiert wird und recht gross werden kann.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf