ein Kapitel zurück                                           ein Kapitel weiter

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

$myImage = new GD::Image(100,100) or die (...);   

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

Bild:gd1.png




open(PNG,"./gd1.png") or die ("Konnte gd1.png nicht öffnen\n");
$image = newFromPng GD::Image(PNG) or die ("Fehler bei newFromPng\n");
close(PNG);

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

$image = newFromPng GD::Image(PNG) or die (....);   

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 gd1.png weiterbearbeiten......

use GD;

# Neues Image erzeugen.
open(PNG,"./gd1.png") or die ("Konnte gd1.png nicht öffnen\n");
$image = newFromPng GD::Image(PNG) or die ("Fehler bei newFromPng\n");
close(PNG);

# Einige Farben bereitstellen.
$black = $image->colorAllocate(0,0,0);
$white = $image->colorAllocate(255,255,255);

# Hintergrund wird transparent und "interlaced".
$image->transparent($white);
$image->interlaced('true');

# Rechteck
$image->rectangle(25,25,75,75,$black);
# und mit Schwarz füllen.
$image->fill(45,45,$black);
$image->fill(55,55,$black);
$image->fill(45,55,$white);
$image->fill(55,45,$white);


# Einen Binär-Stream sicherstellen.
binmode STDOUT;

# Image nach PNG umwandeln und über die Standardausgabe ausgeben.
print $image->png;

So siehts aus :

Bild: gd2.png


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

/usr/bin/perl -w gd.pl > gd2.png

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

open(GIF,"./gd1.gif") or die ("Konnte gd1.gif nicht öffnen\n");
$image = newFromGif GD::Image(GIF) or die ("Fehler bei newFromPng\n");
close(Gif);

...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 älteres GD-Modul herunterladen.

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

newFromXbm GD::Image(XBM)   #X-Bitmap-Format
newFromJpeg GD::Image(JPG)  #jpeg-Format
newFromWmp GD::Image(WBMP)  #Window-Bitmap
newFromGd GD::Image(Gd)     #gd-Format

Beide erwarten ebenso einen Filehandle. Von letzterem Format *.gd kann ich abraten, da die Dateien nicht komprimiert werden und recht gross werden können.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf