NAME
Quiq::Gd::Image - Schnittstelle zur GD Graphics Library
BASE CLASSES
GD::Image
SYNOPSIS
use Quiq::Gd::Image;
my $img = Quiq::Gd::Image->new(100,100);
$img->background('#ffffff');
print $img->jpg;
DESCRIPTION
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.
Vorteile
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.
Unterschiede zwischen Palette-basierten und TrueColor-Bildern
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.
Portierung einer existierenden Anwendung
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);
statt
$white = $img->colorAllocate(255,255,255);
Anwendung testen. Sie sollte fehlerfrei laufen.
Text in ein existierendes Bild schreiben
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);
Hintergrund transparent machen
my $img = Quiq::Gd::Image->new($width,$height);
my $white = $img->background(255,255,255);
$img->transparent($white);
METHODS
Konstruktor
new() - Instantiiere Bildobjekt
Synopsis
$img = $class->new($file);
$img = $class->new($data);
$img = $class->new($width,$height);
$img = $class->new($width,$height,$maxColors);
Returns
Bildobjekt
Description
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!
See Also
Siehe "perldoc GD", Methoden newPalette(), newTrueColor().
Klassenmethoden
textImage() - Erzeuge Bild mit Text
Synopsis
$img = $class->textImage($text,@opt);
Arguments
Options
- -background => $color (Default: 'white')
-
Hintergrundfarbe.
- -color => $color (Default: 'white')
-
Textfarbe.
- -font => $font (Default: 'gdGiantFont')
-
Font, in dem der Text gesetzt wird.
Returns
Bildobjekt
Description
Erzeuge ein Bild, das den Text $text enthält.
Objektmethoden
color() - Alloziere Farbe
Synopsis
$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
Aliases
colorAllocate()
colorResolve()
colorFindAllocate()
Returns
Farbe
Description
Alloziere Farbe in der Farbtabelle des Bildes und liefere den Index des Eintrags zurück. Existiert die Farbe bereits, liefere den existierenden Index.
See Also
"perldoc GD" Methode colorResolve()
background() - Alloziere Farbe und setze Hintergrund
Synopsis
$color = $img->background(@color);
Returns
Farbe
Description
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.
border() - Zeichne inneren Rahmen um das Bild
Synopsis
$img->border($color);
Returns
Nichts
Description
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.
drawCross() - Zeichne ein Kreuz
Synopsis
$img->drawCross($x,$y,$color);
string() - Zeichne Zeichenkette horizontal oder vertikal
Synopsis
$img->string($font,$x,$y,$string,$color,@opt);
Options
Returns
Nichts
Description
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.
Die Position ($x,$y) ist in beiden Ausrichtungen die linke Ecke oberhalb des ersten Zeichens.
horizontal vertikal
($x,$y)
x---------+ +---+
| ....... | | . |
+---------+ | . |
| . |
| . |
| . |
($x,$y) x---+
stringUp() - Zeichne Zeichenkette vertikal
Synopsis
$img->stringUp($font,$x,$y,$string,$color);
Returns
Nichts
Description
Die Methode ist die font-portable Überdeckung für die gleichnmige Methode in der GD-Bibliothek.
stringCentered() - Zeichne Zeichenkette horizontal oder vertikal zentriert
Synopsis
$img->stringCentered($font,$orientation,$x,$y,$string,$color);
rainbowColors() - Alloziere Regenbogenfarben-Palette
Synopsis
@colors | $colorA = $img->rainbowColors($n);
Returns
Array von Farben
Description
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
VERSION
1.206
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2022 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.