Start · Sprachen · PHP · Referenz · image_type_to_mime_type

image_type_to_mime_type

Funktion

Gibt den MIME-Typ (z. B. <code>image/jpeg</code>) für eine <code>IMAGETYPE_*</code>-Konstante zurück.

seit PHP 4.3.0 Kategorie: image

Signatur

image_type_to_mime_type(int $image_type): string

Beschreibung

image_type_to_mime_type() wandelt eine der vordefinierten PHP-Bildtyp-Konstanten (z. B. IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF) in den zugehörigen MIME-Typ-String um. Das Ergebnis lässt sich direkt als HTTP-Header Content-Type verwenden.

Die Funktion ist besonders nützlich in Verbindung mit exif_imagetype() oder getimagesize(), die beide einen IMAGETYPE_*-Integer zurückliefern. So kann man in einem einzigen Schritt den korrekten MIME-Typ ermitteln, ohne eigene Mapping-Arrays pflegen zu müssen.

Unterstützt werden alle gängigen Formate, darunter JPEG, PNG, GIF, BMP, WEBP, AVIF, TIFF, ICO und weitere. Wird ein unbekannter oder nicht unterstützter Bildtyp übergeben, löst die Funktion einen E_WARNING aus und gibt 'application/octet-stream' zurück.

Parameter

Name Typ Default Beschreibung
$image_type Pflicht int Eine der IMAGETYPE_*-Konstanten, z. B. IMAGETYPE_JPEG (2), IMAGETYPE_PNG (3) oder IMAGETYPE_GIF (1). Der Wert entspricht dem zweiten Rückgabewert von getimagesize() bzw. dem direkten Rückgabewert von exif_imagetype().

Rückgabewert

Typ
string
Beschreibung
Den MIME-Typ-String für den angegebenen Bildtyp, z. B. 'image/jpeg', 'image/png' oder 'image/gif'. Bei unbekannten Typen wird 'application/octet-stream' zurückgegeben und ein E_WARNING ausgelöst.

Beispiele

MIME-Typ einer Bilddatei für den Content-Type-Header ermitteln

<?php
// Bildtyp der Datei zuverlässig erkennen
$imageType = exif_imagetype('foto.jpg');

if ($imageType !== false) {
    $mimeType = image_type_to_mime_type($imageType);
    header('Content-Type: ' . $mimeType);
    readfile('foto.jpg');
} else {
    http_response_code(415);
    echo 'Kein gültiges Bildformat erkannt.';
}

Alle gängigen IMAGETYPE_*-Konstanten und ihre MIME-Typen anzeigen

<?php
$typen = [
    IMAGETYPE_GIF     => 'IMAGETYPE_GIF',
    IMAGETYPE_JPEG    => 'IMAGETYPE_JPEG',
    IMAGETYPE_PNG     => 'IMAGETYPE_PNG',
    IMAGETYPE_BMP     => 'IMAGETYPE_BMP',
    IMAGETYPE_WEBP    => 'IMAGETYPE_WEBP',
    IMAGETYPE_AVIF    => 'IMAGETYPE_AVIF',
    IMAGETYPE_ICO     => 'IMAGETYPE_ICO',
    IMAGETYPE_TIFF_II => 'IMAGETYPE_TIFF_II',
];

foreach ($typen as $konstante => $name) {
    printf("%-20s => %s\n", $name, image_type_to_mime_type($konstante));
}
IMAGETYPE_GIF => image/gif IMAGETYPE_JPEG => image/jpeg IMAGETYPE_PNG => image/png IMAGETYPE_BMP => image/bmp IMAGETYPE_WEBP => image/webp IMAGETYPE_AVIF => image/avif IMAGETYPE_ICO => image/vnd.microsoft.icon IMAGETYPE_TIFF_II => image/tiff

Kombination mit getimagesize()

<?php
$info = getimagesize('bild.png');

if ($info !== false) {
    // $info[2] enthält die IMAGETYPE_*-Konstante
    echo 'MIME-Typ: ' . image_type_to_mime_type($info[2]);
} else {
    echo 'Datei konnte nicht analysiert werden.';
}
MIME-Typ: image/png

// Wichtig · Fallstricke

Sicherheitshinweis: Vertraue niemals allein der Dateiendung oder dem vom Client gesendeten Content-Type-Header, um den Bildtyp zu bestimmen. Verwende stattdessen exif_imagetype() oder getimagesize(), um den tatsächlichen Typ zu prüfen, bevor du ihn mit image_type_to_mime_type() in einen MIME-Typ umwandelst. Andernfalls könnte eine manipulierte Datei mit falscher Endung als Bild ausgeliefert werden.

Die Konstante IMAGETYPE_AVIF ist erst ab PHP 8.1 verfügbar. In älteren PHP-Versionen führt deren Verwendung zu einem Fehler. Prüfe die PHP-Version oder die Existenz der Konstante mit defined('IMAGETYPE_AVIF'), bevor du sie einsetzt.