Start · Sprachen · PHP · Referenz · imagecreatefromavif

imagecreatefromavif

Funktion

Erstellt ein neues GD-Bildobjekt aus einer AVIF-Datei oder URL und gibt es zur weiteren Bearbeitung zurück.

seit PHP 8.1.0 Kategorie: image

Signatur

imagecreatefromavif(string $filename): GdImage|false

Beschreibung

imagecreatefromavif() lädt eine AVIF-Bilddatei (AV1 Image File Format) von einem lokalen Dateipfad oder einer URL und gibt ein GdImage-Objekt zurück. Dieses Objekt kann anschließend mit allen GD-Bildbearbeitungsfunktionen weiterverarbeitet und in beliebige andere Formate konvertiert werden.

AVIF ist ein modernes, auf dem AV1-Videocodec basierendes Bildformat, das im Vergleich zu JPEG und WebP eine deutlich bessere Kompression bei gleichzeitig hoher Bildqualität bietet. Es unterstützt außerdem HDR, Wide Color Gamut sowie Alpha-Transparenz. PHP muss mit libavif-Unterstützung kompiliert worden sein, damit diese Funktion verfügbar ist.

Typische Anwendungsfälle sind die serverseitige Verarbeitung von AVIF-Uploads, das Konvertieren von AVIF in andere Formate (z. B. JPEG oder PNG) sowie das Erstellen von Thumbnails aus AVIF-Quellbildern.

Ob PHP-AVIF-Unterstützung vorhanden ist, lässt sich mit function_exists('imagecreatefromavif') oder über gd_info() prüfen.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zur AVIF-Datei auf dem Dateisystem oder eine URL (sofern allow_url_fopen aktiviert ist). Der Pfad kann absolut oder relativ sein.

Rückgabewert

Typ
GdImage|false
Beschreibung
Gibt bei Erfolg ein GdImage-Objekt zurück. Im Fehlerfall (Datei nicht gefunden, kein AVIF, fehlende Bibliothek) wird false zurückgegeben und ein Fehler der Kategorie E_WARNING ausgelöst.

Beispiele

AVIF-Bild laden und als JPEG speichern

<?php
// AVIF-Datei laden
$image = imagecreatefromavif('foto.avif');

if ($image === false) {
    die('Fehler: AVIF-Datei konnte nicht geladen werden.');
}

// Als JPEG mit Qualität 85 speichern
imagejpeg($image, 'foto.jpg', 85);

// Speicher freigeben
imagedestroy($image);

echo 'AVIF erfolgreich in JPEG konvertiert.';
AVIF erfolgreich in JPEG konvertiert.

AVIF-Thumbnail erstellen und im Browser ausgeben

<?php
// AVIF-Bild laden
$source = imagecreatefromavif('hochaufloesend.avif');

if ($source === false) {
    http_response_code(500);
    die('Bilddatei konnte nicht geladen werden.');
}

$origBreite  = imagesx($source);
$origHoehe   = imagesy($source);
$thumbBreite = 300;
$thumbHoehe  = (int) round($origHoehe * ($thumbBreite / $origBreite));

// Ziel-Canvas erstellen (mit Alpha-Unterstützung)
$thumb = imagecreatetruecolor($thumbBreite, $thumbHoehe);
imagealphablending($thumb, false);
imagesavealpha($thumb, true);

// Skalieren
imagecopyresampled(
    $thumb, $source,
    0, 0, 0, 0,
    $thumbBreite, $thumbHoehe,
    $origBreite, $origHoehe
);

// Als PNG ausgeben
header('Content-Type: image/png');
imagepng($thumb);

imagedestroy($source);
imagedestroy($thumb);

// Wichtig · Fallstricke

Verfügbarkeit: Die Funktion ist erst ab PHP 8.1.0 verfügbar und erfordert, dass PHP mit Unterstützung für libavif kompiliert wurde. Ältere PHP-Versionen und Installationen ohne diese Bibliothek kennen die Funktion nicht. Prüfe die Verfügbarkeit stets mit function_exists('imagecreatefromavif').

Sicherheitshinweis bei URLs: Wenn allow_url_fopen aktiviert ist und externe URLs als $filename verwendet werden, können serverseitige Request-Forgery-Angriffe (SSRF) möglich sein. Externe Quellen sollten grundsätzlich validiert und auf Whitelist-Basis zugelassen werden.

Speicherverbrauch: AVIF-Bilder können sehr hohe Auflösungen haben. Das dekodierte Bild wird unkomprimiert im Arbeitsspeicher gehalten. Bei großen Bildern sollte das PHP-Speicherlimit (memory_limit) entsprechend angepasst werden.