Signatur
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
'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));
}
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.';
}
// 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.