Signatur
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
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-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.