Arbeiten mit Bildern
Die Klasse Nette\Utils\Image vereinfacht Bildmanipulationen wie Größenänderung, Zuschneiden, Schärfen, Zeichnen oder das Zusammenfügen mehrerer Bilder.
PHP verfügt über eine umfangreiche Sammlung von Funktionen zur Bildmanipulation. Ihre API ist jedoch nicht sehr komfortabel. Es wäre nicht das Nette Framework, wenn es nicht eine elegante API dafür anbieten würde.
Installation:
composer require nette/utils
Alle Beispiele setzen voraus, dass die folgenden Aliase definiert wurden:
use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;
Erstellung eines Bildes
Wir erstellen ein neues True-Color-Bild, beispielsweise mit den Abmessungen 100×200:
$image = Image::fromBlank(100, 200);
Optional kann eine Hintergrundfarbe angegeben werden (Standard ist Schwarz):
$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));
Oder wir laden das Bild aus einer Datei:
$image = Image::fromFile('nette.jpg');
Speichern des Bildes
Das Bild kann in eine Datei gespeichert werden:
$image->save('resampled.jpg');
Wir können die Kompressionsqualität angeben: im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) sowie im Bereich 0..9 für PNG (Standard 9):
$image->save('resampled.jpg', 80); // JPEG, Qualität 80%
Wenn das Format aus der Dateiendung nicht ersichtlich ist, kann es explizit mit einer Konstante angegeben werden:
$image->save('resampled.tmp', null, ImageType::JPEG);
Das Bild kann statt auf die Festplatte auch in eine Variable geschrieben werden:
$data = $image->toString(ImageType::JPEG, 80); // JPEG, Qualität 80%
oder direkt an den Browser gesendet werden, wobei der entsprechende HTTP-Header Content-Type
gesetzt wird:
// sendet den Header Content-Type: image/png
$image->send(ImageType::PNG);
Formate
Unterstützte Formate sind JPEG, PNG, GIF, WebP, AVIF und BMP. Sie müssen jedoch auch von Ihrer PHP-Installation unterstützt werden, was Sie mit der Methode isTypeSupported() überprüfen können. Animierte Bilder werden nicht unterstützt.
Die Formate werden durch die Konstanten ImageType::JPEG
, ImageType::PNG
, ImageType::GIF
,
ImageType::WEBP
, ImageType::AVIF
und ImageType::BMP
repräsentiert.
$supported = Image::isTypeSupported(ImageType::JPEG);
Müssen Sie das Bildformat beim Laden erkennen? Die Methode gibt es im zweiten Parameter zurück:
$image = Image::fromFile('nette.jpg', $type);
Die reine Formaterkennung ohne Laden des Bildes erfolgt durch Image::detectTypeFromFile()
.
Größenänderung
Eine häufige Operation ist die Änderung der Bildgröße. Die aktuellen Abmessungen werden von den Methoden
getWidth()
und getHeight()
zurückgegeben.
Zur Größenänderung dient die Methode resize()
. Beispiel für eine proportionale Größenänderung, sodass die
Dimensionen 500×300 Pixel nicht überschritten werden (entweder wird die Breite genau 500 px oder die Höhe genau 300 px; die
jeweils andere Dimension wird so berechnet, dass das Seitenverhältnis erhalten bleibt):
$image->resize(500, 300);
Es ist möglich, nur eine Dimension anzugeben; die andere wird dann berechnet:
$image->resize(500, null); // Breite 500px, Höhe wird berechnet
$image->resize(null, 300); // Breite wird berechnet, Höhe 300px
Jede Dimension kann auch in Prozent angegeben werden:
$image->resize('75%', 300); // 75 % × 300px
Das Verhalten von resize()
kann durch die folgenden Flags beeinflusst werden. Alle Flags außer
Image::Stretch
erhalten das Seitenverhältnis.
Flag | Beschreibung |
---|---|
Image::OrSmaller (Standard) |
Die resultierenden Abmessungen sind kleiner oder gleich den angeforderten Abmessungen |
Image::OrBigger |
Füllt (und überschreitet möglicherweise in einer Dimension) die Zielfläche |
Image::Cover |
Füllt die Zielfläche und schneidet ab, was übersteht |
Image::ShrinkOnly |
Nur Verkleinerung (verhindert das Strecken eines kleinen Bildes) |
Image::Stretch |
Seitenverhältnis nicht beibehalten |
Die Flags werden als drittes Argument der Methode übergeben:
$image->resize(500, 300, Image::OrBigger);
Die Flags können kombiniert werden:
$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);
Bilder können vertikal oder horizontal gespiegelt werden, indem eine oder beide Dimensionen als negative Zahl angegeben werden:
$flipped = $image->resize(null, '-100%'); // vertikal spiegeln
$flipped = $image->resize('-100%', '-100%'); // um 180° drehen
$flipped = $image->resize(-125, 500); // Größe ändern & horizontal spiegeln
Nach dem Verkleinern kann das Aussehen des Bildes durch leichtes Nachschärfen verbessert werden:
$image->sharpen();
Zuschneiden
Zum Zuschneiden dient die Methode crop()
:
$image->crop($left, $top, $width, $height);
Ähnlich wie bei resize()
können alle Werte in Prozent angegeben werden. Prozentangaben für $left
und $top
beziehen sich auf den verbleibenden Platz, ähnlich der CSS-Eigenschaft
background-position
:
$image->crop('100%', '50%', '80%', '80%');
Das Bild kann auch automatisch zugeschnitten werden, beispielsweise um schwarze Ränder zu entfernen:
$image->cropAuto(IMG_CROP_BLACK);
Die Methode cropAuto()
ist der objektorientierte Ersatz für die Funktion imagecropauto()
. Weitere
Informationen finden Sie in deren Dokumentation.
Farben
Die Methode ImageColor::rgb()
ermöglicht die Definition einer Farbe mittels Rot-, Grün- und Blauwerten (RGB).
Optional kann auch ein Transparenzwert im Bereich von 0 (vollständig transparent) bis 1 (vollständig undurchsichtig) angegeben
werden, genau wie in CSS.
$color = ImageColor::rgb(255, 0, 0); // Rot
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Halbdurchsichtiges Blau
Die Methode ImageColor::hex()
ermöglicht die Definition einer Farbe im Hexadezimalformat, ähnlich wie in CSS.
Sie unterstützt die Formate #rgb
, #rrggbb
, #rgba
und #rrggbbaa
:
$color = ImageColor::hex("#F00"); // Rot
$transparentGreen = ImageColor::hex("#00FF0080"); // Halbdurchsichtiges Grün
Die Farben können in anderen Methoden wie ellipse()
, fill()
usw. verwendet werden.
Zeichnen und Bearbeiten
Ihnen stehen alle PHP-Funktionen zur Bildbearbeitung zur Verfügung (siehe Methodenübersicht), jedoch in einer objektorientierten Kapselung:
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
Da die nativen PHP-Funktionen zum Zeichnen von Rechtecken aufgrund der Parameter für die Koordinaten unpraktisch sind, bietet
die Image
-Klasse Alternativen in Form der Methoden rectangleWH() und filledRectangleWH().
Zusammenfügen mehrerer Bilder
Ein anderes Bild kann leicht in das aktuelle Bild eingefügt werden:
$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210)); // Blaues Bild
// Koordinaten können wieder in Prozent angegeben werden
$blank->place($logo, '80%', '80%'); // fügt das Logo nahe der rechten unteren Ecke ein
Beim Einfügen wird der Alphakanal berücksichtigt. Zusätzlich kann die Transparenz des eingefügten Bildes beeinflusst werden (um z.B. ein Wasserzeichen zu erstellen):
$blank->place($image, '80%', '80%', 25); // Transparenz beträgt 25 %
Eine solche API macht wirklich Freude!
Methodenübersicht
static fromBlank (int $width, int $height, ?ImageColor $color=null): Image
Erstellt ein neues True-Color-Bild mit den angegebenen Abmessungen ($width
, $height
) und optionaler
Hintergrundfarbe $color
. Die Standardfarbe ist Schwarz.
static fromFile (string $file, int &$detectedFormat=null): Image
Lädt ein Bild aus einer Datei $file
und gibt optional dessen Typ in
$detectedFormat
zurück.
static fromString (string $s, int &$detectedFormat=null): Image
Lädt ein Bild aus einem String $s
und gibt optional dessen Typ in
$detectedFormat
zurück.
static rgb (int $red, int $green, int $blue, int $transparency=0): array
Diese Methode wurde durch die Klasse ImageColor
ersetzt, siehe Farben.
static typeToExtension (int $type): string
Gibt die Dateiendung für den angegebenen Typ zurück (z.B. .jpg
).
static typeToMimeType (int $type): string
Gibt den MIME-Typ für den angegebenen Typ zurück (z.B. image/jpeg
).
static extensionToType (string $extension): int
Gibt den Typ des Bildes anhand der Dateiendung $extension
zurück.
static detectTypeFromFile (string $file, int &$width=null, int &$height=null): ?int
Gibt den Typ des Bildes aus der Datei $file
zurück und optional dessen Abmessungen in
den Parametern $width
und $height
.
static detectTypeFromString (string $s, int &$width=null, int &$height=null): ?int
Gibt den Typ des Bildes aus einem String $s
zurück und optional dessen Abmessungen in
den Parametern $width
und $height
.
static isTypeSupported (int $type): bool
Prüft, ob der angegebene Typ des Bildes von der aktuellen PHP-Installation unterstützt wird.
static getSupportedTypes(): array
Gibt ein Array der unterstützten Bildtypen zurück.
static calculateTextBox (string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array
Berechnet die Abmessungen des Rechtecks, das den Text $text
in einer bestimmten Schriftart
($fontFile
), Größe ($size
) und Winkel ($angle
) umschließt. Gibt ein assoziatives Array
zurück, das die Schlüssel left
, top
, width
und height
enthält. Der linke
Rand (left
) kann negativ sein, wenn der Text links überhängt (Kerning).
affine (array $affine, ?array $clip=null): Image
Gibt ein Bild zurück, das das affin transformierte Quellbild enthält, optional mit einem Zuschneidebereich. (mehr).
affineMatrixConcat (array $m1, array $m2): array
Gibt die Verkettung zweier affiner Transformationsmatrizen zurück, was nützlich ist, wenn mehrere Transformationen gleichzeitig auf dasselbe Bild angewendet werden sollen. (mehr)
affineMatrixGet (int $type, ?mixed $options=null): array
Gibt eine affine Transformationsmatrix zurück. (mehr)
alphaBlending (bool $on): void
Ermöglicht zwei verschiedene Zeichenmodi in Truecolor-Bildern. Im Blending-Modus bestimmt die Alpha-Komponente der Farbe, die
in allen Zeichenfunktionen wie setPixel()
verwendet wird, inwieweit die darunterliegende Farbe durchscheinen darf.
Als Ergebnis wird die vorhandene Farbe an diesem Punkt automatisch mit der gezeichneten Farbe gemischt und das Ergebnis im Bild
gespeichert. Das resultierende Pixel ist undurchsichtig. Im Modus ohne Blending wird die gezeichnete Farbe buchstäblich mit ihren
Alphakanal-Informationen kopiert und ersetzt das Zielpixel. Der Blending-Modus ist beim Zeichnen auf Palettenbildern nicht
verfügbar. (mehr)
antialias (bool $on): void
Aktiviert das Zeichnen von geglätteten Linien und Polygonen. Unterstützt keine Alphakanäle. Funktioniert nur bei Truecolor-Bildern.
Die Verwendung von antialiased Primitiven mit einer transparenten Hintergrundfarbe kann zu unerwarteten Ergebnissen führen. Die Blending-Methode verwendet die Hintergrundfarbe wie alle anderen Farben. (mehr)
arc (int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color): void
Zeichnet einen Kreisbogen mit dem Mittelpunkt an den angegebenen Koordinaten. (mehr)
colorAllocate (int $red, int $green, int $blue): int
Gibt einen Farbidentifikator zurück, der die aus den angegebenen RGB-Komponenten zusammengesetzte Farbe darstellt. Muss für jede Farbe aufgerufen werden, die im Bild verwendet werden soll. (mehr)
colorAllocateAlpha (int $red, int $green, int $blue, int $alpha): int
Verhält sich genauso wie colorAllocate()
mit dem zusätzlichen Transparenzparameter $alpha
. (mehr)
colorAt (int $x, int $y): int
Gibt den Farbindex des Pixels an der angegebenen Stelle im Bild zurück. Wenn das Bild Truecolor ist, gibt diese Funktion den RGB-Wert dieses Pixels als Ganzzahl zurück. Verwenden Sie Bitshifting und Bitmaskierung, um auf die separaten Werte der Rot-, Grün- und Blau-Komponenten zuzugreifen: (mehr)
colorClosest (int $red, int $green, int $blue): int
Gibt den Index der Farbe in der Bildpalette zurück, die dem angegebenen RGB-Wert „am nächsten“ ist. Der “Abstand” zwischen der gewünschten Farbe und jeder Farbe in der Palette wird berechnet, als ob die RGB-Werte Punkte in einem dreidimensionalen Raum darstellen würden. (mehr)
colorClosestAlpha (int $red, int $green, int $blue, int $alpha): int
Gibt den Index der Farbe in der Bildpalette zurück, die dem angegebenen RGB-Wert und der $alpha
-Ebene „am
nächsten“ ist. (mehr)
colorClosestHWB (int $red, int $green, int $blue): int
Ruft den Index der Farbe ab, die den Farbton, Weiß und Schwarz der angegebenen Farbe am nächsten kommt. (mehr)
colorDeallocate (int $color): void
Gibt eine Farbe frei, die zuvor mit colorAllocate()
oder colorAllocateAlpha()
zugewiesen wurde. (mehr)
colorExact (int $red, int $green, int $blue): int
Gibt den Index der angegebenen Farbe in der Bildpalette zurück. (mehr)
colorExactAlpha (int $red, int $green, int $blue, int $alpha): int
Gibt den Index der angegebenen Farbe + Alpha in der Bildpalette zurück. (mehr)
colorMatch (Image $image2): void
Passt die Farben der Palette an das zweite Bild an. (mehr)
colorResolve (int $red, int $green, int $blue): int
Gibt einen Farbindex für eine angeforderte Farbe zurück, entweder die genaue Farbe oder die nächstmögliche Alternative. (mehr)
colorResolveAlpha (int $red, int $green, int $blue, int $alpha): int
Gibt einen Farbindex für eine angeforderte Farbe zurück, entweder die genaue Farbe oder die nächstmögliche Alternative. (mehr)
colorSet (int $index, int $red, int $green, int $blue): void
Setzt den angegebenen Index in der Palette auf die angegebene Farbe. (mehr)
colorsForIndex (int $index): array
Ruft die Farbe des angegebenen Index ab. (mehr)
colorsTotal(): int
Gibt die Anzahl der Farben in der Bildpalette zurück. (mehr)
colorTransparent (?int $color=null): int
Ruft die transparente Farbe im Bild ab oder legt sie fest. (mehr)
convolution (array $matrix, float $div, float $offset): void
Wendet eine Faltungsmatrix auf das Bild an, unter Verwendung des angegebenen Koeffizienten und Offsets. (mehr)
Erfordert das Vorhandensein der Bundled GD extension, funktioniert also möglicherweise nicht überall.
copy (Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void
Kopiert einen Teil von $src
auf das Bild, beginnend bei den Koordinaten $srcX
, $srcY
mit
der Breite $srcW
und Höhe $srcH
. Der definierte Teil wird an die Koordinaten $dstX
und
$dstY
kopiert. (mehr)
copyMerge (Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void
Kopiert einen Teil von $src
auf das Bild, beginnend bei den Koordinaten $srcX
, $srcY
mit
der Breite $srcW
und Höhe $srcH
. Der definierte Teil wird an die Koordinaten $dstX
und
$dstY
kopiert. (mehr)
copyMergeGray (Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void
Kopiert einen Teil von $src
auf das Bild, beginnend bei den Koordinaten $srcX
, $srcY
mit
der Breite $srcW
und Höhe $srcH
. Der definierte Teil wird an die Koordinaten $dstX
und
$dstY
kopiert.
Diese Funktion ist identisch mit copyMerge()
mit der Ausnahme, dass beim Zusammenführen der Farbton der Quelle
erhalten bleibt, indem die Zielpixel vor dem Kopiervorgang in Graustufen konvertiert werden. (mehr)
copyResampled (Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiert einen rechteckigen Bereich von $src
in das aktuelle Bild, wobei die Pixelwerte geglättet interpoliert
werden. Dadurch bleibt insbesondere beim Verkleinern eine hohe Bildschärfe erhalten.
Anders ausgedrückt: copyResampled()
nimmt einen rechteckigen Bereich aus $src
mit Breite
$srcW
und Höhe $srcH
an der Position ($srcX
, $srcY
) und platziert ihn in
einen rechteckigen Bereich des Zielbildes mit Breite $dstW
und Höhe $dstH
an der Position
($dstX
, $dstY
).
Wenn sich Quell- und Zielkoordinaten sowie Breiten und Höhen unterscheiden, wird das Bildfragment entsprechend gestreckt oder gestaucht. Die Koordinaten beziehen sich auf die obere linke Ecke. Diese Methode kann zum Kopieren von Bereichen innerhalb desselben Bildes verwendet werden; wenn sich die Bereiche jedoch überlappen, sind die Ergebnisse nicht vorhersagbar. (mehr)
copyResized (Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiert einen rechteckigen Bereich von $src
in das aktuelle Bild. Anders ausgedrückt: copyResized()
nimmt einen rechteckigen Bereich aus $src
mit Breite $srcW
und Höhe $srcH
an der Position
($srcX
, $srcY
) und platziert ihn in einen rechteckigen Bereich des Zielbildes mit Breite
$dstW
und Höhe $dstH
an der Position ($dstX
, $dstY
).
Wenn sich Quell- und Zielkoordinaten sowie Breiten und Höhen unterscheiden, wird das Bildfragment entsprechend gestreckt oder gestaucht. Die Koordinaten beziehen sich auf die obere linke Ecke. Diese Methode kann zum Kopieren von Bereichen innerhalb desselben Bildes verwendet werden; wenn sich die Bereiche jedoch überlappen, sind die Ergebnisse nicht vorhersagbar. (mehr)
crop (int|string $left, int|string $top, int|string $width, int|string $height): Image
Schneidet das Bild auf den angegebenen rechteckigen Bereich zu. Die Abmessungen können als Integer in Pixeln oder als Strings
in Prozent (z.B. '50%'
) angegeben werden.
cropAuto (int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image
Schneidet das Bild automatisch zu, basierend auf dem angegebenen $mode
, $threshold
und optional
$color
. (mehr)
ellipse (int $centerX, int $centerY, int $width, int $height, ImageColor $color): void
Zeichnet eine Ellipse mit dem Mittelpunkt an den angegebenen Koordinaten. (mehr)
fill (int $x, int $y, ImageColor $color): void
Füllt einen Bereich beginnend bei den angegebenen Koordinaten (oben links ist 0, 0) mit der angegebenen $color
.
(mehr)
filledArc (int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style): void
Zeichnet einen Teilbogen mit dem Mittelpunkt an den angegebenen Koordinaten. (mehr)
filledEllipse (int $centerX, int $centerY, int $width, int $height, ImageColor $color): void
Zeichnet eine Ellipse mit dem Mittelpunkt an den angegebenen Koordinaten. (mehr)
filledPolygon (array $points, ImageColor $color): void
Erstellt ein gefülltes Polygon im Bild. (mehr)
filledRectangle (int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Erstellt ein mit $color
gefülltes Rechteck im Bild, beginnend am Punkt $x1
& $y1
und endend am Punkt $x2
& $y2
. Punkt 0, 0 ist die obere linke Ecke des Bildes. (mehr)
filledRectangleWH (int $left, int $top, int $width, int $height, ImageColor $color): void
Erstellt ein mit $color
gefülltes Rechteck im Bild, beginnend am Punkt $left
& $top
mit der Breite $width
und Höhe $height
. Punkt 0, 0 ist die obere linke Ecke des Bildes.
fillToBorder (int $x, int $y, int $border, ImageColor $color): void
Führt eine Flutfüllung durch, deren Randfarbe mit $border
definiert ist. Der Startpunkt der Füllung ist
$x
, $y
(oben links ist 0, 0) und der Bereich wird mit der Farbe $color
gefüllt. (mehr)
filter (int $filtertype, int …$args): void
Wendet den angegebenen Filter $filtertype
auf das Bild an. (mehr)
flip (int $mode): void
Spiegelt das Bild entsprechend dem angegebenen $mode
. (mehr)
ftText (float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array
Schreibt Text in das Bild. (mehr)
gammaCorrect (float $inputgamma, float $outputgamma): void
Wendet eine Gammakorrektur auf das Bild an, relativ zum Eingangs- und Ausgangsgamma. (mehr)
getClip(): array
Gibt den aktuellen Clipping-Bereich als Array mit den Koordinaten x1, y1, x2, y2 zurück. (mehr)
getHeight(): int
Gibt die Höhe des Bildes in Pixeln zurück.
getImageResource(): \GdImage|resource
Gibt die zugrundeliegende GD-Bildressource (resource
oder GdImage
-Objekt) zurück.
getWidth(): int
Gibt die Breite des Bildes in Pixeln zurück.
interlace (?int $interlace=null): int
Aktiviert oder deaktiviert den Interlace-Modus. Wenn der Interlace-Modus aktiviert ist und das Bild als JPEG gespeichert wird, wird es als progressives JPEG gespeichert. (mehr)
isTrueColor(): bool
Prüft, ob das Bild ein Truecolor-Bild ist. (mehr)
layerEffect (int $effect): void
Setzt das Alpha-Blending-Flag, um Layer-Effekte zu verwenden. (mehr)
line (int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Zeichnet eine Linie zwischen zwei gegebenen Punkten. (mehr)
openPolygon (array $points, ImageColor $color): void
Zeichnet ein offenes Polygon auf das Bild. Im Gegensatz zu polygon()
wird keine Linie zwischen dem letzten und dem
ersten Punkt gezeichnet. (mehr)
paletteCopy (Image $source): void
Kopiert die Palette vom Quellbild ($source
) in das aktuelle Bild. (mehr)
paletteToTrueColor(): void
Konvertiert ein palettenbasiertes Bild in ein Truecolor-Bild. (mehr)
place (Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image
Kopiert $image
in das Bild an die Koordinaten $left
und $top
. Die Koordinaten können
als Integer in Pixeln oder als Strings in Prozent (z.B. '50%'
) angegeben werden.
polygon (array $points, ImageColor $color): void
Erstellt ein Polygon im Bild. (mehr)
rectangle (int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Erstellt ein Rechteck an den angegebenen Koordinaten. (mehr)
rectangleWH (int $left, int $top, int $width, int $height, ImageColor $color): void
Erstellt ein Rechteck an den angegebenen Koordinaten.
resize (int|string $width, int|string $height, int $flags=Image::OrSmaller): Image
Ändert die Größe des Bildes, mehr Informationen. Die Abmessungen können als Integer in
Pixeln oder als Strings in Prozent (z.B. '50%'
) angegeben werden.
resolution (?int $resX=null, ?int $resY=null): mixed
Setzt oder gibt die Auflösung des Bildes in DPI (dots per inch) zurück. Wenn keiner der optionalen Parameter angegeben wird,
wird die aktuelle Auflösung als indiziertes Array zurückgegeben. Wenn nur $resX
angegeben wird, werden die
horizontale und vertikale Auflösung auf diesen Wert gesetzt. Wenn beide optionalen Parameter angegeben werden, werden die
horizontale und vertikale Auflösung auf diese Werte gesetzt.
Die Auflösung wird nur als Metainformation verwendet, wenn Bilder in Formaten gelesen und geschrieben werden, die diese Art von Informationen unterstützen (derzeit PNG und JPEG). Sie hat keinen Einfluss auf Zeichenoperationen. Die Standardauflösung neuer Bilder beträgt 96 DPI. (mehr)
rotate (float $angle, int $backgroundColor): Image
Dreht das Bild um den angegebenen $angle
in Grad. Der Drehpunkt ist der Mittelpunkt des Bildes, und das gedrehte
Bild kann andere Abmessungen haben als das Originalbild. (mehr)
Erfordert das Vorhandensein der Bundled GD extension, funktioniert also möglicherweise nicht überall.
save (string $file, ?int $quality=null, ?int $type=null): void
Speichert das Bild in einer Datei.
Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und
0..9 für PNG (Standard 9). Wenn der Typ aus der Dateiendung nicht ersichtlich ist, können Sie ihn mit einer der
ImageType
-Konstanten angeben.
saveAlpha (bool $saveflag): void
Setzt das Flag, ob beim Speichern von PNG-Bildern die vollständigen Alphakanal-Informationen beibehalten werden sollen (im Gegensatz zu einfarbiger Transparenz).
Alphablending muss deaktiviert sein (alphaBlending(false)
), damit der Alphakanal überhaupt erhalten bleibt. (mehr)
scale (int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image
Skaliert das Bild unter Verwendung des angegebenen Interpolationsalgorithmus. (mehr)
send (int $type=ImageType::JPEG, ?int $quality=null): void
Gibt das Bild an den Browser aus.
Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und 0..9 für PNG (Standard 9).
setBrush (Image $brush): void
Legt das Pinselbild fest, das in allen Linienzeichnungsfunktionen (z. B. line()
und polygon()
)
verwendet wird, wenn mit den speziellen Farben IMG_COLOR_BRUSHED oder IMG_COLOR_STYLEDBRUSHED gezeichnet wird. (mehr)
setClip (int $x1, int $y1, int $x2, int $y2): void
Legt den aktuellen Clipping-Bereich fest, d.h. den Bereich, außerhalb dessen keine Pixel gezeichnet werden. (mehr)
setInterpolation (int $method=IMG_BILINEAR_FIXED): void
Legt die Interpolationsmethode fest, die die Methoden rotate()
und affine()
beeinflusst. (mehr)
setPixel (int $x, int $y, ImageColor $color): void
Zeichnet ein Pixel an den angegebenen Koordinaten. (mehr)
setStyle (array $style): void
Legt den Stil fest, der von allen Linienzeichnungsfunktionen (z. B. line()
und polygon()
) verwendet
werden soll, wenn mit der speziellen Farbe IMG_COLOR_STYLED oder Linien von Bildern mit der Farbe IMG_COLOR_STYLEDBRUSHED
gezeichnet wird. (mehr)
setThickness (int $thickness): void
Legt die Liniendicke beim Zeichnen von Rechtecken, Polygonen, Bögen usw. auf $thickness
Pixel fest. (mehr)
setTile (Image $tile): void
Legt das Kachelbild fest, das in allen Bereichsfüllfunktionen (z. B. fill()
und filledPolygon()
)
verwendet wird, wenn mit der speziellen Farbe IMG_COLOR_TILED gefüllt wird.
Eine Kachel ist ein Bild, das zum Füllen eines Bereichs mit einem sich wiederholenden Muster verwendet wird. Jedes Bild kann
als Kachel verwendet werden, und durch Festlegen des transparenten Farbindex des Kachelbildes mit colorTransparent()
kann eine Kachel erstellt werden, bei der bestimmte Teile des darunterliegenden Bereichs durchscheinen. (mehr)
sharpen(): Image
Schärft das Bild.
Erfordert das Vorhandensein der Bundled GD extension, funktioniert also möglicherweise nicht überall.
toString (int $type=ImageType::JPEG, ?int $quality=null): string
Speichert das Bild in einem String.
Die Kompressionsqualität liegt im Bereich 0..100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) und 0..9 für PNG (Standard 9).
trueColorToPalette (bool $dither, int $ncolors): void
Konvertiert ein Truecolor-Bild in ein Palettenbild. (mehr)
ttfText (float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array
Gibt den angegebenen Text in das Bild aus. (mehr)