|
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.......
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 :
Ü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.
© 2001,2002 Jürgen Wolf
|