ein Kapitel zurück                                           ein Kapitel weiter

Mittels.......

print $image->png;

...wir das PNG-Format schon auf die Standardausgabe geschreiben. Die Standardausgabe haben wir ja mittels....

perl -w gd.pl > image.png

..in eine Datei umgeleitet. Man muss sich hier selbst um die Ausgabe kümmern. Dabei geht dies auch komfortabler....

use GD;

# Neues Image erzeugen.
$image = new GD::Image(100,100) or die ("Fehler bei newFromPng\n");

# 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(0,0,99,99,$black);
$image->rectangle(10,10,89,89,$white);
$image->fill(50,50,$white);
$image->rectangle(30,30, 69,69,$black);
$image->fill(50,50,$black);

$png = $image->png;
open(PNG,"> gd3.png") or die ("Fehler bei open.....\n");
# Einen Binär-Stream sicherstellen.
binmode PNG;
print PNG $png;
close(PNG);

So siehts aus :

Bild: gd3.png


Nun können sie das Programm ohne Dateiumleitung übersetzen. Wir haben das ledeglich mittels.........

$png = $image->png;
open(PNG,"> gd3.png") or die ("Fehler bei open.....\n");
# Einen Binär-Stream sicherstellen.
binmode PNG;
print PNG $png;
close(PNG);

...erreicht. Wir erstellen einfach mit open eine *.png-Datei unserer Wahl. binmode benötigen wir wieder für M$. Anschließend schreiben wir in den Stream mittels print. Die Zuweisung mittels.....

$png = $image->png;

hätten wir uns auch ersparen können und gleich mittels.....

print PNG $image->png;

...in den Stream zu schreiben. Wollen sie Ihr Bild gleich noch mit einem Grafikprogramm ansehen können sie dies so erledigen.......

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);

#Bild bearbeiten

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

# Image nach PNG umwandeln
$image->png;
open(X,"| xview ./gd1.png") or die ("Konnte xview nicht öffnen\n");
close(X);

Hier leiten wir das Bild einfach an eine Pipe zu dem Programm xview weiter. So ist es natürlich möglich eine Datei auch anderwohin zu leiten.....

$png_data = $myImage->png;
open (DISPLAY,"| display -") or die;
binmode DISPLAY;
print DISPLAY $png_data;
close DISPLAY;

...zum Beispiel zum Druckerspool zum ausdrucken.

Nun ich denke ich muss Ihnen nichts über die Grundlagen von Perl erzählen. Außer PNG-Dateien können natürlich auch andere Formate ausgeben werden (die Anwendung ist wieder die selbe wie in unserem Beispiel eben, nur eben mit einem anderen Präfix).......

$image->jpeg

Hiermit geben wir ein Jpeg-Grafik aus. Die Qualität können wir auch noch beeinflussen mittels....

$image->jpeg(50);

Hier erstellen wir ein Jpeg-Datei mit 50%-iger Qualität. Mehr ist besser und weniger schlechter. Beispiel.......

$jpeg = $image->jpeg(50);
open(JPEG,"> gd4.jpeg") or die ("Fehler bei open.....\n");
# Einen Binär-Stream sicherstellen.
binmode JPEG;
print JPEG $jpeg;
close(JPEG);

Weitere Dateiformate wären....

$image->gd;           #gd-Format
$image->gd2;          #gd2-Format
$image->wbmp;         #WBMP-Format

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf