Start · Sprachen · PHP · Referenz · imageavif

imageavif

Funktion

Gibt ein <code>GdImage</code>-Objekt als AVIF-Datei aus – entweder direkt an den Browser oder in eine Datei.

seit PHP 8.1.0 Kategorie: image

Signatur

imageavif(GdImage $image, string|null $file = null, int $quality = -1, int $speed = -1): bool

Beschreibung

imageavif() kodiert ein GD-Bildobjekt im AVIF-Format (AV1 Image File Format) und schreibt das Ergebnis entweder in eine Datei oder gibt es direkt an den Ausgabe-Puffer aus. AVIF bietet im Vergleich zu JPEG und WebP eine deutlich bessere Kompressionseffizienz bei gleicher visueller Qualität und unterstützt HDR, Alpha-Transparenz sowie verlustfreie Kompression.

Der Parameter quality steuert die Bildqualität von 0 (schlechteste Qualität, kleinste Datei) bis 100 (beste Qualität, größte Datei). Der Standardwert -1 überlässt die Wahl der Standardeinstellung der zugrunde liegenden Bibliothek (libavif). Der Parameter speed beeinflusst die Kodiergeschwindigkeit von 0 (langsam, bessere Kompression) bis 10 (schnell, schlechtere Kompression); auch hier bedeutet -1 Standardeinstellung.

Wird $file als null oder weggelassen übergeben, wird das AVIF-Bild direkt ausgegeben. In diesem Fall sollte vor der Ausgabe der passende HTTP-Header Content-Type: image/avif gesetzt werden. Alternativ kann ein Dateipfad oder eine bereits geöffnete Datei-Ressource angegeben werden.

Voraussetzung für die Nutzung von imageavif() ist, dass PHP mit AVIF-Unterstützung kompiliert wurde (libavif muss vorhanden sein). Die Verfügbarkeit lässt sich mit imagetypes() und dem Flag IMG_AVIF prüfen.

Parameter

Name Typ Default Beschreibung
$image Pflicht GdImage Das GD-Bildobjekt, das zuvor z. B. mit imagecreatetruecolor(), imagecreatefromjpeg() o. Ä. erzeugt wurde.
$file string|null null Dateipfad oder geöffnete Datei-Ressource, in die das AVIF-Bild geschrieben wird. Bei null erfolgt die Ausgabe direkt an den Ausgabe-Puffer (z. B. Browser).
$quality int -1 Bildqualität von 0 (niedrigste) bis 100 (höchste). -1 verwendet die Standardeinstellung der Bibliothek.
$speed int -1 Kodiergeschwindigkeit von 0 (langsam, bessere Kompression) bis 10 (schnell, schlechtere Kompression). -1 verwendet die Standardeinstellung der Bibliothek.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false bei einem Fehler (z. B. wenn AVIF-Unterstützung fehlt oder die Datei nicht geschrieben werden kann).

Beispiele

AVIF-Bild direkt an den Browser ausgeben

<?php
// AVIF-Unterstützung prüfen
if (!(imagetypes() & IMG_AVIF)) {
    die('AVIF wird von dieser PHP-Installation nicht unterstützt.');
}

// Neues True-Color-Bild erstellen
$image = imagecreatetruecolor(400, 200);

// Hintergrundfarbe setzen
$bg = imagecolorallocate($image, 30, 144, 255);
imagefilledrectangle($image, 0, 0, 399, 199, $bg);

// Text einfügen
$textColor = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5, 120, 85, 'Hallo AVIF!', $textColor);

// Korrekten Content-Type senden
header('Content-Type: image/avif');

// Bild mit Qualität 80 ausgeben
imageavif($image, null, 80);
imagedestroy($image);
(Binäre AVIF-Bilddaten werden an den Browser gesendet)

AVIF-Bild in eine Datei speichern

<?php
// Vorhandenes JPEG laden
$source = imagecreatefromjpeg('/var/www/html/fotos/original.jpg');
if ($source === false) {
    die('Quelldatei konnte nicht geladen werden.');
}

// Als AVIF mit Qualität 75 und mittlerer Geschwindigkeit speichern
$ziel = '/var/www/html/fotos/konvertiert.avif';
$ergebnis = imageavif($source, $ziel, 75, 6);

if ($ergebnis) {
    echo 'Bild erfolgreich als AVIF gespeichert: ' . $ziel;
} else {
    echo 'Fehler beim Speichern der AVIF-Datei.';
}

imagedestroy($source);
Bild erfolgreich als AVIF gespeichert: /var/www/html/fotos/konvertiert.avif

// Wichtig · Fallstricke

Verfügbarkeit: imageavif() ist erst ab PHP 8.1.0 verfügbar und erfordert, dass PHP gegen libavif kompiliert wurde. Ältere Server-Umgebungen unterstützen diese Funktion möglicherweise nicht. Vor dem Einsatz sollte stets imagetypes() & IMG_AVIF geprüft werden.

Browser-Kompatibilität: AVIF wird von modernen Browsern (Chrome ab v85, Firefox ab v93, Safari ab v16) unterstützt, ältere Browser jedoch nicht. Für maximale Kompatibilität empfiehlt sich das <picture>-Element mit AVIF als bevorzugtes Format und JPEG/PNG als Fallback.

Performance: Die AVIF-Kodierung ist je nach Einstellung deutlich langsamer als JPEG oder WebP. Für dynamisch generierte Bilder sollte das Ergebnis gecacht werden, um wiederholte Kodierungen zu vermeiden.