Signatur
Beschreibung
exif_thumbnail() extrahiert das in den EXIF-Metadaten einer JPEG- oder TIFF-Datei eingebettete Vorschaubild. Digitalkameras und viele Bildbearbeitungsprogramme speichern beim Fotografieren automatisch ein komprimiertes Thumbnail innerhalb der EXIF-Struktur, das für schnelle Vorschauen genutzt werden kann, ohne das vollständige Bild laden zu müssen.
Die Funktion akzeptiert seit PHP 7.2.0 sowohl einen Dateinamen als String als auch eine bereits geöffnete Datei-Ressource. Die zurückgegebenen Daten sind die rohen Binärdaten des Thumbnail-Bildes, typischerweise im JPEG-Format. Diese können direkt an den Browser gesendet oder weiterverarbeitet werden.
Über die optionalen Referenzparameter $width, $height und $imagetype lassen sich gleichzeitig die Abmessungen und der Bildtyp des Thumbnails ermitteln. Der Bildtyp entspricht einer der IMAGETYPE_*-Konstanten (z. B. IMAGETYPE_JPEG).
Falls die Datei kein eingebettetes Thumbnail enthält, gibt die Funktion false zurück. In diesem Fall müssen Thumbnails ggf. aus dem Originalbild selbst erzeugt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $file Pflicht | resource|string | Pfad zur Bilddatei (JPEG oder TIFF) als String oder eine bereits geöffnete Datei-Ressource. Die Ressource-Variante ist seit PHP 7.2.0 verfügbar. | |
| $width | int | null | Wird mit der Breite des eingebetteten Thumbnails in Pixeln befüllt (Referenzparameter). |
| $height | int | null | Wird mit der Höhe des eingebetteten Thumbnails in Pixeln befüllt (Referenzparameter). |
| $imagetype | int | null | Wird mit dem Bildtyp des Thumbnails befüllt (Referenzparameter). Der Wert entspricht einer der IMAGETYPE_*-Konstanten, z. B. IMAGETYPE_JPEG. |
Rückgabewert
false zurückgegeben.Beispiele
Thumbnail direkt an den Browser senden
<?php
$datei = '/var/www/fotos/urlaubsfoto.jpg';
$thumbnail = exif_thumbnail($datei, $breite, $hoehe, $bildtyp);
if ($thumbnail !== false) {
// Content-Type-Header basierend auf dem ermittelten Bildtyp setzen
header('Content-Type: ' . image_type_to_mime_type($bildtyp));
echo $thumbnail;
} else {
// Kein Thumbnail vorhanden — Fallback auf Originalbild oder Platzhalterbild
http_response_code(404);
echo 'Kein eingebettetes Thumbnail verfügbar.';
}
Thumbnail-Informationen auslesen und Datei speichern
<?php
$quelldatei = '/var/www/fotos/portrait.jpg';
$zieldatei = '/var/www/cache/portrait_thumb.jpg';
$rohdaten = exif_thumbnail($quelldatei, $breite, $hoehe, $bildtyp);
if ($rohdaten !== false) {
printf(
"Thumbnail: %d x %d Pixel, Typ: %s\n",
$breite,
$hoehe,
image_type_to_mime_type($bildtyp)
);
// Thumbnail als Datei speichern
file_put_contents($zieldatei, $rohdaten);
echo "Thumbnail gespeichert unter: $zieldatei\n";
} else {
echo "Die Datei enthält kein EXIF-Thumbnail.\n";
}
// Wichtig · Fallstricke
Erweiterung erforderlich: Die Funktion setzt voraus, dass PHP mit der EXIF-Erweiterung kompiliert wurde (--enable-exif). Unter Windows muss php_exif.dll in der php.ini aktiviert sein. Die Erweiterung muss zudem nach der mbstring-Erweiterung geladen werden.
Nicht alle Dateien enthalten ein Thumbnail: Viele mit Software bearbeitete oder optimierte JPEG-Dateien (z. B. nach dem Speichern mit bestimmten Bildbearbeitungsprogrammen oder nach einer Komprimierung) enthalten kein EXIF-Thumbnail mehr. Der Rückgabewert muss daher immer auf false geprüft werden.
Sicherheitshinweis: Bei der Verarbeitung von Dateien, die von Benutzern hochgeladen wurden, sollte der Dateiname niemals ungeprüft übernommen werden. EXIF-Daten können manipuliert sein. Die rohen Thumbnail-Daten sollten nicht direkt als vertrauenswürdig behandelt werden — eine erneute Verarbeitung durch GD oder Imagick ist empfehlenswert, bevor das Bild weiterverwendet wird.