Arbeiten mit Bildern
Die Klasse Nette\Utils\Image vereinfacht die Arbeit mit Bildern, etwa das Ändern der Größe, das Zuschneiden, Schärfen, Zeichnen oder das Zusammenfügen mehrerer Bilder.
PHP verfügt über einen umfangreichen Satz von Funktionen zur Bildbearbeitung. Deren API ist allerdings nicht besonders benutzerfreundlich. Es wäre nicht das Nette Framework, wenn es nicht mit einer angenehmen API käme.
Installation:
composer require nette/utils
Die folgenden Beispiele setzen voraus, dass diese Klassen-Aliase definiert sind:
use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;
Erstellung eines Bildes
Erzeugen Sie ein neues Truecolor-Bild, zum Beispiel mit den Abmessungen 100×200:
$image = Image::fromBlank(100, 200);
Optional können Sie die Hintergrundfarbe angeben (standardmäßig Schwarz):
$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));
Oder Sie laden ein Bild aus einer Datei:
$image = Image::fromFile('nette.jpg');
Speichern des Bildes
Das Bild lässt sich in eine Datei speichern:
$image->save('resampled.jpg');
Die Kompressionsqualität können Sie im Bereich 0–100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) sowie 0–9 für PNG (Standard 9) angeben:
$image->save('resampled.jpg', 80); // JPEG, Qualität 80 %
Wenn sich das Format nicht aus der Dateiendung ergibt, lässt es sich über eine Konstante angeben:
$image->save('resampled.tmp', null, ImageType::JPEG);
Statt es auf die Festplatte zu speichern, lässt sich das Bild auch in eine Variable schreiben:
$data = $image->toString(ImageType::JPEG, 80); // JPEG, Qualität 80 %
oder direkt mit dem passenden HTTP-Header Content-Type an den Browser senden:
// sendet den Header Content-Type: image/png
$image->send(ImageType::PNG);
Formate
Unterstützt werden JPEG, PNG, GIF, WebP, AVIF und BMP. Ihre PHP-Version muss sie allerdings ebenfalls unterstützen, was Sie mit der Funktion isTypeSupported() prüfen können. Animationen 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);
Sie müssen das Format des Bildes beim Laden erkennen? Die Methode gibt es im zweiten Parameter zurück:
$image = Image::fromFile('nette.jpg', $type);
Die Erkennung, ohne das Bild selbst zu laden, erledigt Image::detectTypeFromFile().
Größenänderung
Eine häufige Aufgabe ist das Ändern der Bildgröße. Die aktuellen Abmessungen liefern die Methoden getWidth()
und getHeight().
Zum Ändern der Größe dient die Methode resize(). Beispiel für eine proportionale Änderung, sodass das Bild
500×300 Pixel nicht überschreitet (entweder ist die Breite genau 500px oder die Höhe genau 300px; die zweite Abmessung wird so
berechnet, dass das Seitenverhältnis erhalten bleibt):
$image->resize(500, 300);
Es lässt sich auch nur eine Abmessung angeben, die zweite wird dann automatisch berechnet:
$image->resize(500, null); // Breite 500px, Höhe wird automatisch berechnet
$image->resize(null, 300); // Breite wird automatisch berechnet, Höhe 300px
Jede Abmessung lässt sich auch in Prozent angeben:
$image->resize('75%', 300); // 75 % × 300px
Das Verhalten von resize() lässt sich durch die folgenden Flags beeinflussen. Alle Flags außer
Image::Stretch erhalten das Seitenverhältnis.
| Flag | Beschreibung |
|---|---|
Image::OrSmaller (Standard) |
die resultierenden Abmessungen sind kleiner oder gleich den geforderten Abmessungen |
Image::OrBigger |
füllt den Zielbereich aus (und überschreitet ihn eventuell in einer Abmessung) |
Image::Cover |
füllt den Zielbereich aus und schneidet ab, was darüber hinausgeht |
Image::ShrinkOnly |
verkleinert nur (verhindert das Hochskalieren eines kleinen Bildes) |
Image::Stretch |
erhält das Seitenverhältnis nicht |
Die Flags werden der Methode als drittes Argument übergeben:
$image->resize(500, 300, Image::OrBigger);
Flags lassen sich kombinieren:
$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);
Bilder lassen sich vertikal oder horizontal spiegeln, indem eine der Abmessungen (oder beide) als negative Zahl angegeben wird:
$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 Ändern der Größe können Sie das Aussehen des Bildes durch dezentes Schärfen verbessern:
$image->sharpen();
Zuschneiden
Zum Zuschneiden dient die Methode crop():
$image->crop($left, $top, $width, $height);
Wie bei resize() lassen sich alle Werte in Prozent angeben. Die Prozentwerte für $left und
$top werden aus dem verbleibenden Platz berechnet, ähnlich wie bei der CSS-Eigenschaft
background-position:
$image->crop('100%', '50%', '80%', '80%');
Das Bild lässt sich auch automatisch zuschneiden, etwa um schwarze Ränder zu entfernen:
$image->cropAuto(IMG_CROP_BLACK);
Die Methode cropAuto() ist ein objektorientierter Wrapper für die Funktion imagecropauto(), mehr
dazu in ihrer Dokumentation.
Farben
Mit der Methode ImageColor::rgb() lässt sich eine Farbe über die Werte für Rot, Grün und Blau (RGB)
definieren. Optional können Sie zusätzlich einen Transparenzwert von 0 (völlig transparent) bis 1 (völlig deckend) angeben,
genau wie in CSS.
$color = ImageColor::rgb(255, 0, 0); // Rot
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // halbtransparentes Blau
Mit der Methode ImageColor::hex() lässt sich eine Farbe im Hexadezimalformat definieren, ähnlich wie in CSS.
Unterstützt werden die Formate #rgb, #rrggbb, #rgba und #rrggbbaa:
$color = ImageColor::hex("#F00"); // Rot
$transparentGreen = ImageColor::hex("#00FF0080"); // halbtransparentes Grün
Farben lassen sich in weiteren Methoden verwenden, etwa in ellipse(), fill() und so weiter.
Zeichnen und Bearbeiten
Alle PHP-Funktionen zur Bildbearbeitung stehen Ihnen zur Verfügung, siehe Methodenübersicht, allerdings in objektorientierter Form:
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
Weil die nativen PHP-Funktionen zum Zeichnen von Rechtecken wegen der Angabe der Koordinaten etwas unpraktisch sind, bietet die
Klasse Image Ersatz an: rectangleWH() und filledRectangleWH().
Zusammenfügen mehrerer Bilder
Sie können ein anderes Bild ganz leicht auf das aktuelle setzen:
$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));
// die Koordinaten lassen sich auch in Prozent angeben
$blank->place($logo, '80%', '80%'); // nahe der rechten unteren Ecke platzieren
Beim Platzieren wird der Alphakanal berücksichtigt. Zusätzlich können Sie die Transparenz des platzierten Bildes beeinflussen und so ein Wasserzeichen erzeugen:
$blank->place($image, '80%', '80%', 25); // die Deckkraft beträgt 25 %
Mit einer solchen API zu arbeiten ist wirklich ein Vergnügen!
Methodenübersicht
static fromBlank(int $width, int $height, ?ImageColor $color=null): Image
Erzeugt ein neues Truecolor-Bild mit den angegebenen Abmessungen. Die Standardfarbe ist Schwarz.
static fromFile(string $file, int &$detectedFormat=null, string &$warnings=null): Image
Liest ein Bild aus einer Datei und gibt seinen Typ in $detectedFormat zurück. Wenn Sie
$warnings übergeben, werden darin nicht fatale Warnungen des Bilddecoders abgelegt, statt sie als PHP-Warnung
auszulösen; gibt es keine, bleibt der Wert null.
static fromString(string $s, int &$detectedFormat=null, string &$warnings=null): Image
Liest ein Bild aus einem String und gibt seinen Typ in $detectedFormat zurück. Wenn
Sie $warnings übergeben, werden darin nicht fatale Warnungen des Bilddecoders abgelegt, statt sie als PHP-Warnung
auszulösen; gibt es keine, bleibt der Wert null.
static rgb(int $red, int $green, int $blue, int $transparency=0): array
Diese Funktion wurde durch die Klasse ImageColor ersetzt, siehe Farben.
static typeToExtension(int $type): string
Gibt die Dateiendung für den angegebenen Typ zurück.
static typeToMimeType(int $type): string
Gibt den MIME-Typ für den angegebenen Typ zurück.
static extensionToType(string $extension): int
Gibt den Typ des Bildes anhand der Dateiendung zurück.
static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int
Gibt den Typ der Bilddatei zurück und in den Parametern $width und
$height außerdem ihre Abmessungen.
static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int
Gibt den Typ des Bildes aus einem String zurück und in den Parametern $width und
$height außerdem seine Abmessungen.
static isTypeSupported(int $type): bool
Prüft, ob der angegebene Typ des Bildes 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 in einer bestimmten Schrift und Größe umschließt. Gibt ein
assoziatives Array mit den Schlüsseln left, top, width und height zurück.
Der linke Rand kann negativ sein, wenn der Text mit einem linken Unterschneidungsüberhang beginnt.
affine(array $affine, ?array $clip=null): Image
Gibt ein Bild zurück, das das affin transformierte Ausgangsbild enthält, unter Verwendung eines optionalen Ausschnittbereichs. (mehr)
alphaBlending(bool $on): void
Erlaubt zwei verschiedene Modi zum Zeichnen auf Truecolor-Bildern. Im Blending-Modus bestimmt der Alphakanal der Farbe, die
allen Zeichenfunktionen wie setPixel() übergeben wird, wie stark die darunterliegende Farbe durchscheinen darf. Die
vorhandene Farbe an dieser Stelle wird dadurch automatisch mit der Zeichenfarbe gemischt und das Ergebnis im Bild gespeichert. Das
resultierende Pixel ist deckend. Im Nicht-Blending-Modus wird die Zeichenfarbe wortwörtlich samt ihrer Alphakanal-Information
kopiert und ersetzt das Zielpixel. Auf Palettenbildern steht der Blending-Modus nicht zur Verfügung. (mehr)
antialias(bool $on): void
Aktiviert die schnellen Zeichenmethoden mit Antialiasing für Linien und Drahtgitter-Polygone. Alphakomponenten werden nicht unterstützt. Es arbeitet mit einer direkten Blend-Operation und funktioniert nur mit Truecolor-Bildern.
Antialiasing-Primitive mit transparenter Hintergrundfarbe können zu unerwarteten Ergebnissen führen. Die Blend-Methode behandelt die Hintergrundfarbe wie jede andere Farbe. Die fehlende Unterstützung der Alphakomponente erlaubt kein Antialiasing auf Alpha-Basis. (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 Farbbezeichner zurück, der die aus den angegebenen RGB-Komponenten zusammengesetzte Farbe repräsentiert. Die Methode 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 identisch zu colorAllocate(), ergänzt um den Transparenzparameter $alpha. (mehr)
colorAt(int $x, int $y): int
Gibt den Farbindex des Pixels an der angegebenen Stelle im Bild zurück. Bei einem Truecolor-Bild gibt die Funktion den RGB-Wert dieses Pixels als ganze Zahl zurück. Verwenden Sie Bitverschiebung und Maskierung, um an die einzelnen Werte der Rot-, Grün- und Blau-Komponente zu kommen: (mehr)
colorClosest(int $red, int $green, int $blue): int
Gibt den Index der Farbe in der Palette des Bildes zurück, die dem angegebenen RGB-Wert am „nächsten“ ist. Der „Abstand“ zwischen der gewünschten Farbe und jeder Farbe der Palette wird so berechnet, als wären die RGB-Werte Punkte im dreidimensionalen Raum. (mehr)
colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int
Gibt den Index der Farbe in der Palette des Bildes zurück, die dem angegebenen RGB-Wert und dem $alpha-Wert am
„nächsten“ ist. (mehr)
colorClosestHWB(int $red, int $green, int $blue): int
Ermittelt den Index der Farbe, deren Farbton, Weiß- und Schwarzanteil der angegebenen Farbe am nächsten kommt. (mehr)
colorDeallocate(int $color): void
Gibt eine Farbe frei, die zuvor mit colorAllocate() oder colorAllocateAlpha() reserviert wurde. (mehr)
colorExact(int $red, int $green, int $blue): int
Gibt den Index der angegebenen Farbe in der Palette des Bildes zurück. (mehr)
colorExactAlpha(int $red, int $green, int $blue, int $alpha): int
Gibt den Index der angegebenen Farbe samt Alpha in der Palette des Bildes zurück. (mehr)
colorMatch(Image $image2): void
Gleicht die Farben der Palettenversion eines Bildes stärker an die Truecolor-Version an. (mehr)
colorResolve(int $red, int $green, int $blue): int
Gibt einen Farbindex für die gewünschte Farbe zurück, entweder die exakte Farbe oder die nächstmögliche Alternative. (mehr)
colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int
Gibt einen Farbindex für die gewünschte Farbe zurück, entweder die exakte Farbe oder die nächstmögliche Alternative. (mehr)
colorSet(int $index, int $red, int $green, int $blue, int $alpha=0): void
Setzt den angegebenen Index in der Palette auf die angegebene Farbe. (mehr)
colorsForIndex(int $index): array
Ermittelt die Farbe für einen angegebenen Index. (mehr)
colorsTotal(): int
Gibt die Anzahl der Farben in der Palette des Bildes zurück. (mehr)
colorTransparent(?int $color=null): int
Ermittelt oder setzt die transparente Farbe im Bild. (mehr)
convolution(array $matrix, float $div, float $offset): void
Wendet eine Faltungsmatrix auf das Bild an, mit dem angegebenen Koeffizienten und Offset. (mehr)
Erfordert die 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 in das Bild, beginnend bei den Koordinaten $srcX, $srcY, mit
der Breite $srcW und der Höhe $srcH. Der so definierte Ausschnitt 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 in das Bild, beginnend bei den Koordinaten $srcX, $srcY, mit
der Breite $srcW und der Höhe $srcH. Der so definierte Ausschnitt 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 in das Bild, beginnend bei den Koordinaten $srcX, $srcY, mit
der Breite $srcW und der Höhe $srcH. Der so definierte Ausschnitt wird an die Koordinaten
$dstX und $dstY kopiert.
Diese Funktion ist identisch mit copyMerge(), nur bewahrt sie beim Zusammenführen den Farbton der Quelle, indem
sie die Zielpixel vor dem Kopieren in Graustufen umwandelt. (mehr)
copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiert einen rechteckigen Ausschnitt eines Bildes in ein anderes Bild und interpoliert die Pixelwerte dabei weich, sodass insbesondere beim Verkleinern eines Bildes viel Schärfe erhalten bleibt.
Mit anderen Worten: copyResampled() nimmt aus $src einen rechteckigen Bereich der Breite
$srcW und der Höhe $srcH an der Position ($srcX,$srcY) und setzt ihn in einen
rechteckigen Bereich des Bildes mit der Breite $dstW und der Höhe $dstH an der Position
($dstX,$dstY).
Unterscheiden sich die Koordinaten sowie Breite und Höhe von Quelle und Ziel, wird der Bildausschnitt entsprechend gestreckt oder gestaucht. Die Koordinaten beziehen sich auf die linke obere Ecke. Mit dieser Funktion lassen sich auch Bereiche innerhalb desselben Bildes kopieren, überlappen sich die Bereiche jedoch, ist das Ergebnis unvorhersehbar. (mehr)
copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiert einen rechteckigen Ausschnitt eines Bildes in ein anderes Bild. Mit anderen Worten: copyResized() nimmt
aus $src einen rechteckigen Bereich der Breite $srcW und der Höhe $srcH an der Position
($srcX,$srcY) und setzt ihn in einen rechteckigen Bereich des Bildes mit der Breite $dstW
und der Höhe $dstH an der Position ($dstX,$dstY).
Unterscheiden sich die Koordinaten sowie Breite und Höhe von Quelle und Ziel, wird der Bildausschnitt entsprechend gestreckt oder gestaucht. Die Koordinaten beziehen sich auf die linke obere Ecke. Mit dieser Funktion lassen sich auch Bereiche innerhalb desselben Bildes kopieren, überlappen sich die Bereiche jedoch, ist das Ergebnis unvorhersehbar. (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 lassen sich als ganze Zahlen in Pixeln oder als
Strings in Prozent angeben (z. B. '50%').
cropAuto(int $mode=0, float $threshold=.5, ?ImageColor $color=null): Image
Schneidet das Bild automatisch nach dem angegebenen $mode zu. (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ührt eine Flächenfüllung ab der angegebenen Koordinate aus (links oben ist 0, 0), und zwar mit der Farbe
$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
Erzeugt ein gefülltes Polygon im Bild. (mehr)
filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Erzeugt im Bild ein mit $color gefülltes Rechteck, das am Punkt ($x1, $y1) beginnt und
bei ($x2, $y2) endet. Der Punkt (0, 0) ist die linke obere Ecke des Bildes. (mehr)
filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void
Erzeugt im Bild ein mit $color gefülltes Rechteck, das am Punkt ($x, $y) beginnt und
die Breite $width sowie die Höhe $height hat. Der Punkt (0, 0) ist die linke obere Ecke des Bildes.
fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color): void
Führt eine Flächenfüllung aus, deren Rand durch die Farbe $borderColor bestimmt ist. Startpunkt der Füllung
ist ($x, $y) (links oben ist 0, 0), gefüllt wird der Bereich mit der Farbe $color. (mehr)
filter(int $filtertype, int …$args): void
Wendet den angegebenen Filter $filtertype auf das Bild an. (mehr)
flip(int $mode): void
Spiegelt das Bild gemäß 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 auf das Bild eine Gammakorrektur mit dem angegebenen Eingangs- und Ausgangsgamma an. (mehr)
getClip(): array
Liefert das aktuelle Beschneidungsrechteck, also den Bereich, außerhalb dessen keine Pixel gezeichnet werden. (mehr)
getHeight(): int
Gibt die Höhe des Bildes zurück.
getImageResource(): GdImage
Gibt die zugrunde liegende GD-Bildressource zurück.
getWidth(): int
Gibt die Breite des Bildes zurück.
interlace(?int $interlace=null): int
Schaltet das Interlacing ein oder aus. Ist Interlacing aktiviert und wird das Bild als JPEG gespeichert, entsteht ein progressives JPEG. (mehr)
isTrueColor(): bool
Prüft, ob das Bild ein Truecolor-Bild ist. (mehr)
layerEffect(int $effect): void
Setzt das Alpha-Blending-Flag für die Verwendung von Ebeneneffekten. (mehr)
line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Zeichnet eine Linie zwischen den beiden angegebenen Punkten. (mehr)
openPolygon(array $points, ImageColor $color): void
Zeichnet ein offenes Polygon in das Bild. Anders als bei polygon() wird zwischen dem letzten und dem ersten Punkt
keine Linie gezogen. (mehr)
paletteCopy(Image $source): void
Kopiert die Palette von $source in das Bild. (mehr)
paletteToTrueColor(): void
Wandelt ein palettenbasiertes Bild in ein Truecolor-Bild um. (mehr)
place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image
Kopiert $image an den Koordinaten ($left, $top) in das aktuelle Bild. Die Koordinaten
lassen sich als ganze Zahlen in Pixeln oder als Strings in Prozent angeben (z. B. '50%').
polygon(array $points, ImageColor $color): void
Erzeugt ein Polygon im Bild. (mehr)
rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Erzeugt ein Rechteck an den angegebenen Koordinaten. (mehr)
rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void
Erzeugt ein Rechteck an den angegebenen Koordinaten anhand von Breite und Höhe.
resize(int|string $width, int|string $height, int $mode=Image::OrSmaller): Image
Ändert die Größe des Bildes, siehe mehr Informationen. Die Abmessungen lassen sich als
ganze Zahlen in Pixeln oder als Strings in Prozent angeben (z. B. '50%').
resolution(?int $resX=null, ?int $resY=null): mixed
Erlaubt es, die Auflösung eines Bildes in DPI (dots per inch) zu setzen und auszulesen. Wird keiner der optionalen Parameter
angegeben, wird die aktuelle Auflösung als indiziertes Array zurückgegeben. Wird nur $resX angegeben, werden die
horizontale und die vertikale Auflösung auf diesen Wert gesetzt. Werden beide optionalen Parameter angegeben, werden die
horizontale und die vertikale Auflösung jeweils auf diese Werte gesetzt.
Die Auflösung dient nur als Metainformation, wenn Bilder aus Formaten gelesen oder in Formate geschrieben werden, die diese Art von Information unterstützen (derzeit PNG und JPEG). Auf Zeichenoperationen hat sie keinen Einfluss. Die Standardauflösung neuer Bilder beträgt 96 DPI. (mehr)
rotate(float $angle, ImageColor $backgroundColor): Image
Dreht das Bild um den angegebenen Winkel $angle in Grad. Das Drehzentrum ist die Mitte des Bildes, und das
gedrehte Bild kann andere Abmessungen haben als das ursprüngliche. (mehr)
Erfordert die Bundled GD extension, funktioniert also möglicherweise nicht überall.
save(string $file, ?int $quality=null, ?int $type=null): void
Speichert das Bild in eine Datei.
Die Kompressionsqualität liegt im Bereich 0–100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) sowie
0–9 für PNG (Standard 9). Wenn sich der Typ nicht aus der Dateiendung ergibt, können Sie ihn über eine der Konstanten
ImageType angeben.
saveAlpha(bool $saveflag): void
Setzt das Flag, das bestimmt, ob beim Speichern von PNG-Bildern die vollständige Alphakanal-Information gespeichert wird (statt einer einfarbigen Transparenz).
Nette schaltet dieses Flag im Konstruktor von Image ein, ein über fromFile(),
fromString() oder fromBlank() geladenes oder erzeugtes Bild behält seinen Alphakanal also. Beachten
Sie, dass im Standard-Blending-Modus das Alpha einer gezeichneten Farbe nur zum Mischen des Ergebnisses dient und nicht
gespeichert wird. Soll die gezeichnete Transparenz erhalten bleiben, rufen Sie also zuerst alphaBlending(false) auf.
(mehr)
scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image
Skaliert ein Bild mit dem 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) sowie 0–9 für PNG (Standard 9).
setBrush(Image $brush): void
Setzt das Pinselbild, das alle Funktionen zum Zeichnen von Linien (etwa line() und polygon())
verwenden, 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
Setzt das aktuelle Beschneidungsrechteck, also den Bereich, außerhalb dessen keine Pixel gezeichnet werden. (mehr)
setInterpolation(int $method=IMG_BILINEAR_FIXED): void
Setzt die Interpolationsmethode, die sich auf die Methoden rotate() und affine() auswirkt. (mehr)
getInterpolation(): int
Gibt die aktuelle Interpolationsmethode zurück, die die Methoden rotate() und affine()
verwenden.
setPixel(int $x, int $y, ImageColor $color): void
Zeichnet ein Pixel an der angegebenen Koordinate. (mehr)
setStyle(array $style): void
Setzt den Stil, den alle Funktionen zum Zeichnen von Linien (etwa line() und polygon()) verwenden,
wenn mit der speziellen Farbe IMG_COLOR_STYLED gezeichnet wird, oder für Linien aus Bildern mit der Farbe
IMG_COLOR_STYLEDBRUSHED. (mehr)
setThickness(int $thickness): void
Setzt die Stärke der Linien, die beim Zeichnen von Rechtecken, Polygonen, Bögen usw. gezogen werden, auf
$thickness Pixel. (mehr)
setTile(Image $tile): void
Setzt das Kachelbild, das alle Funktionen zum Füllen von Bereichen (etwa fill() und filledPolygon())
verwenden, wenn mit der speziellen Farbe IMG_COLOR_TILED gefüllt wird.
Eine Kachel ist ein Bild, mit dem ein Bereich in einem sich wiederholenden Muster gefüllt wird. Als Kachel lässt sich jedes
Bild verwenden, und indem Sie mit colorTransparent() den Index der transparenten Farbe des Kachelbildes setzen,
entsteht eine Kachel, durch die bestimmte Teile des darunterliegenden Bereichs durchscheinen. (mehr)
sharpen(): Image
Schärft das Bild.
Erfordert die Bundled GD extension, funktioniert also möglicherweise nicht überall.
toString(int $type=ImageType::JPEG, ?int $quality=null): string
Gibt das Bild als String aus.
Die Kompressionsqualität liegt im Bereich 0–100 für JPEG (Standard 85), WEBP (Standard 80) und AVIF (Standard 30) sowie 0–9 für PNG (Standard 9).
trueColorToPalette(bool $dither, int $ncolors): void
Wandelt ein Truecolor-Bild in ein Palettenbild um. (mehr)
ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array
Schreibt den angegebenen Text in das Bild. (mehr)