Quiq::Gd::Image - Schnittstelle zur GD Graphics Library
GD::Image
Quiq::Object
use Quiq::Gd::Image; my $img = Quiq::Gd::Image->new(100,100); $img->background('#ffffff'); print $img->jpg;
Die Klasse ist eine Überdeckung der Klasse GD::Image. Sie überschreibt existierende Methoden und ergänzt die Klasse um weitere Methoden. Die Klasse kann überall verwendet werden, wo GD::Image verwendet wird. Alle Methoden von GD::Image sind auch auf Quiq::Gd::Image-Objekte anwendbar.
Die Klasse Quiq::Gd::Image bietet folgende Vorteile:
Beliebig viele Farben, da alle Bilder per Default TrueColor sind. Bei GD sind Bilder per Default pallette-basiert mit maximal 256 Farben.
Die Klasse verfügt mit der Methode string() über eine einheitliche Schnittstelle zum Zeichnen von GD- und TrueType-Fonts, horizontal und vertikal. Bei GD werden GD- und TrueType-Fonts uneinheitlich behandelt.
Die Methoden der Klasse lösen im Fehlerfall eine Exception aus.
Bei TrueColor liefert die GD-Methode colorAllocate() - mehrfach für denselben Farbwert aufgerufen - immer den gleichen Farbindex. Bei einem Palette-Bild wird immer ein neuer Farbindex geliefert, auch wenn der Farbwert gleich ist. Daher muss aus portablitätsgründen die GD-Methode colorResolve() genutzt werden. Diese Portabilität wird von der Methode color() sichergestellt.
Konstruktor-Aufruf ersetzen:
$img = Quiq::Gd::Image->new($width,$height);
statt
$img = GD::Image->new($width,$height);
Nach dem Konstruktor-Aufruf die Hintergrundfarbe setzen:
$white = $img->background(255,255,255);
$white = $img->colorAllocate(255,255,255);
Anwendung testen. Sie sollte fehlerfrei laufen.
use Quiq::Gd::Font; use Quiq::Gd::Image; use Quiq::Path; my $fnt = Quiq::Gd::Font->new('gdMediumBoldFont'); my $img = Quiq::Gd::Image->new('bild.jpg'); my $color = $img->color(255,0,0); $img->string($fnt,10,10,'TEST',$color); Quiq::Path->write('bild.jpg',$img->jpeg);
my $img = Quiq::Gd::Image->new($width,$height); my $white = $img->background(255,255,255); $img->transparent($white);
$img = $class->new($file); $img = $class->new($data); $img = $class->new($width,$height); $img = $class->new($width,$height,$maxColors);
Bildobjekt
Instantiiere ein Bildobjekt der Breite $width und der Höhe $height mit einer maximalen Anzahl von $maxColors Farben und liefere eine Referenz auf dieses Objekt zurück. Schlägt der Aufruf fehl, löse eine Exception aus.
Ist $maxColors nicht angegeben oder $maxColors > 256, wird ein TrueColor-Bild erzeugt, andernfalls ein palette-basiertes Bild mit maximal 256 Farben.
Die Methode blesst das Objekt auf die Klasse $class, da die Methoden newPalette() und newTrueColor() der Klasse GD::Image dies nicht tun!
Der Hintergrund eines TrueColor-Bildes ist schwarz. Eine andere Hintergrundfarbe wird mit background() gesetzt. Anders als bei einem palette-basierten Bild ist nicht die erste allozierte Farbe die Hintergrundfarbe!
Siehe "perldoc GD", Methoden newPalette(), newTrueColor().
$color = $img->color; # Default-Farbe $color = $img->color(undef); # Default-Farbe $color = $img->color($n); # Index, bereits allozierte GD-Farbe $color = $img->color($r,$g,$b); # dezimal $color = $img->color(\@rgb); # dezimal als Array-Referenz $color = $img->color('RRGGBB'); # hexadezimal $color = $img->color('#RRGGBB'); # hexadezimal
colorAllocate()
colorResolve()
colorFindAllocate()
Farbe
Alloziere Farbe in der Farbtabelle des Bildes und liefere den Index des Eintrags zurück. Existiert die Farbe bereits, liefere den existierenden Index.
"perldoc GD" Methode colorResolve()
$color = $img->background(@color);
Alloziere Farbe @color, fülle das gesamte Bild mit der Farbe und liefere den Farbindex zurück.
Zu den möglichen Angaben für @color siehe Methode $img->color().
Der Hintergrund eines TrueColor-Bildes ist anfänglich schwarz. Anders als bei einem Palette-basierten Bild wird nicht die erste allozierte Farbe automatisch die Hintergrundfarbe. Daher sollte die erste Farbe mit dieser Methode alloziert werden, damit gleichzeitig die Hintergrundfarbe gesetzt wird.
$img->border($color);
Nichts
Zeichne einen inneren Rahmen in Farbe $color um das Bild. "Innerer Rahmen" bedeutet, dass der Rahmen Teil des Bildes ist und nicht außen um das Bild herumgelegt ist.
$img->string($font,$x,$y,$string,$color,@opt);
Schreibe den Text nicht horizontal sondern vertikal.
Zeichne Zeichenkette $string an Position ($x,$y). Die Zeichenkette kann mehrzeilig sein.
Der Font ist ein Quiq::Gd::Font-Objekt. Diese Klasse vereinheitlicht GD- und TrueType-Fonts. GD-Fonts können nicht in beliebigem Winkel, sondern nur horizontal und vertikal geschrieben werden, daher erlaubt die Methode nur diese beiden Ausrichtungen.
Quiq::Gd::Font
Die Position ($x,$y) ist in beiden Ausrichtungen die linke Ecke oberhalb des ersten Zeichens.
horizontal vertikal ($x,$y) x---------+ +---+ | ....... | | . | +---------+ | . | | . | | . | | . | ($x,$y) x---+
$img->stringUp($font,$x,$y,$string,$color);
Die Methode ist die font-portable Überdeckung für die gleichnmige Methode in der GD-Bibliothek.
$img->stringCentered($font,$orientation,$x,$y,$string,$color);
@colors | $colorA = $img->rainbowColors($n);
Array von Farben
Alloziere eine Palette von $n Regenbogenfarben (Blau nach Rot) und liefere die Liste der Farbtabellen-Indizes zurück.
Werte für $n: 4, 8, 16, 32, 64, 128, 256, 512, 1024.
Die Regenbogenfarben können verwendet werden, um die Werte eines Wertebereichs in einen Farbverlauf zu übersetzen.
Farbe % Wertebereich R G B --------- -------------- --- --- --- Blau 0 0 0 255 | G-Anteil nimmt zu Hellblau 25 0 255 255 | B-Anteil nimmt ab Gruen 50 0 255 0 | R-Anteil nimmt zu Gelb 75 255 255 0 | G-Anteil nimmt ab Rot 100 255 0 0
1.170
Frank Seitz, http://fseitz.de/
Copyright (C) 2020 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.