Start · Sprachen · PHP · Referenz · exif_thumbnail

exif_thumbnail

Funktion

Liest das eingebettete Miniaturbild (Thumbnail) aus einer JPEG- oder TIFF-Datei und gibt die rohen Bilddaten zurück.

seit PHP 4.2.0 Kategorie: io

Signatur

exif_thumbnail(resource|string $file, int &$width = null, int &$height = null, int &$imagetype = null): string|false

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

Typ
string|false
Beschreibung
Gibt die rohen Binärdaten des eingebetteten Thumbnails als String zurück. Enthält die Datei kein Thumbnail oder tritt ein Fehler auf, wird 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";
}
Thumbnail: 160 x 120 Pixel, Typ: image/jpeg Thumbnail gespeichert unter: /var/www/cache/portrait_thumb.jpg

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