Start · Sprachen · PHP · Referenz · image_type_to_extension

image_type_to_extension

Funktion

Gibt die Dateierweiterung (z. B. <code>.jpg</code>) für einen IMAGETYPE-Konstanten-Wert zurück.

seit PHP 5.0.0 Kategorie: image

Signatur

image_type_to_extension(int $image_type, bool $include_dot = true): string|false

Beschreibung

image_type_to_extension() wandelt einen der IMAGETYPE_*-Konstanten (z. B. IMAGETYPE_JPEG, IMAGETYPE_PNG) in die zugehörige Dateiendung um. Damit lassen sich Dateinamen automatisch mit der richtigen Erweiterung versehen, ohne diese hartkodieren zu müssen.

Die Funktion ist besonders nützlich in Kombination mit getimagesize(), das im zurückgegebenen Array unter Index 2 genau einen solchen IMAGETYPE_*-Wert liefert. So kann man den Typ eines hochgeladenen Bildes ermitteln und die Datei korrekt benennen.

Standardmäßig enthält die Rückgabe einen führenden Punkt (.), sodass der Wert direkt an einen Dateinamen ohne Erweiterung angehängt werden kann. Wird $include_dot auf false gesetzt, entfällt dieser Punkt — nützlich, wenn die Erweiterung getrennt verarbeitet werden soll.

Für unbekannte oder nicht unterstützte Bildtypen gibt die Funktion false zurück. Es sollte daher immer ein Rückgabeprüfung erfolgen, bevor der Wert weiterverwendet wird.

Parameter

Name Typ Default Beschreibung
$image_type Pflicht int Eine der IMAGETYPE_*-Konstanten, z. B. IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF usw.
$include_dot bool true Wenn true (Standard), wird der Rückgabewert mit einem führenden Punkt zurückgegeben (z. B. .jpeg). Bei false wird der Punkt weggelassen (z. B. jpeg).

Rückgabewert

Typ
string|false
Beschreibung
Die Dateierweiterung als Zeichenkette (mit oder ohne führenden Punkt, je nach $include_dot), oder false, wenn der angegebene Bildtyp nicht erkannt wird.

Beispiele

Dateierweiterung aus IMAGETYPE-Konstante ermitteln

<?php
// Direkte Verwendung mit einer IMAGETYPE_*-Konstante
$extension = image_type_to_extension(IMAGETYPE_JPEG);
echo $extension; // .jpeg

$extensionNoDot = image_type_to_extension(IMAGETYPE_PNG, false);
echo $extensionNoDot; // png
.jpeg png

Kombination mit getimagesize() beim Datei-Upload

<?php
// Simulierter Pfad zu einer hochgeladenen Datei
$uploadedFile = '/tmp/phpXkZ3ab';

$imageInfo = getimagesize($uploadedFile);

if ($imageInfo === false) {
    echo 'Keine gültige Bilddatei.';
} else {
    $imageType = $imageInfo[2]; // IMAGETYPE_*-Konstante
    $extension = image_type_to_extension($imageType);

    if ($extension === false) {
        echo 'Unbekannter Bildtyp.';
    } else {
        $newFilename = 'bild_' . uniqid() . $extension;
        $destination = '/var/www/uploads/' . $newFilename;
        move_uploaded_file($uploadedFile, $destination);
        echo 'Gespeichert als: ' . $newFilename;
    }
}
Gespeichert als: bild_64f3c1a2e4b5a.jpeg

Alle gängigen IMAGETYPE-Konstanten und ihre Erweiterungen ausgeben

<?php
$types = [
    IMAGETYPE_GIF,
    IMAGETYPE_JPEG,
    IMAGETYPE_PNG,
    IMAGETYPE_WEBP,
    IMAGETYPE_BMP,
    IMAGETYPE_AVIF,
];

foreach ($types as $type) {
    $ext = image_type_to_extension($type, false);
    echo "Typ $type => " . ($ext !== false ? $ext : 'unbekannt') . "\n";
}
Typ 1 => gif Typ 2 => jpeg Typ 3 => png Typ 18 => webp Typ 6 => bmp Typ 19 => avif

// Wichtig · Fallstricke

Sicherheitshinweis: Verlasse dich beim Datei-Upload niemals auf die vom Browser übermittelte Dateiendung oder den MIME-Typ, um den Bildtyp zu bestimmen. Nutze stattdessen getimagesize() oder finfo_file(), da diese den tatsächlichen Dateiinhalt analysieren. image_type_to_extension() liefert nur dann korrekte Ergebnisse, wenn der übergebene IMAGETYPE_*-Wert tatsächlich aus einer solchen Analyse stammt.

Hinweis zu IMAGETYPE_JPEG: Die Funktion gibt für JPEG-Bilder .jpeg zurück, nicht .jpg. Falls du .jpg benötigst, musst du den Wert manuell ersetzen oder anpassen.

Die Funktion gibt false zurück, wenn ein ungültiger oder nicht unterstützter Typ übergeben wird. Prüfe den Rückgabewert daher stets mit === false.