Image type to mime type: примеры (PHP)

Полное руководство по image_type_to_mime_type в PHP 8
Раздел: Работа с изображениями
image_type_to_mime_type(int $image_type): string
Описание функции image_type_to_mime_type

Функция image_type_to_mime_type() возвращает MIME-тип для указанной константы типа изображения, полученной с помощью функций вроде exif_imagetype() или getimagesize(). Она применяется при обработке загружаемых файлов, динамической генерации HTTP-заголовков или валидации графических данных.

Аргументы функции

Функция принимает один обязательный параметр:

  • $image_type — целое число (integer), представляющее одну из констант IMAGETYPE_* (например, IMAGETYPE_JPEG, IMAGETYPE_PNG).
Базовые примеры использования
Пример 1: Определение MIME-типа для JPEG
$type = IMAGETYPE_JPEG;
echo image_type_to_mime_type($type);
image/jpeg
Пример 2: Работа с PNG
$mime = image_type_to_mime_type(IMAGETYPE_PNG);
var_dump($mime);
string(9) "image/png"
Пример 3: Использование с getimagesize
$info = getimagesize('photo.gif');
$mime = image_type_to_mime_type($info[2]);
echo $mime;
image/gif
Похожие функции в PHP

mime_content_type() — определяет MIME-тип содержимого файла. Работает с любыми файлами, а не только с изображениями, но требует чтения файла с диска.

echo mime_content_type('document.pdf');
application/pdf

finfo_file() из расширения Fileinfo — более мощная и современная альтернатива для определения MIME-типа. Рекомендуется для обработки непроверенных файлов.

$finfo = finfo_open(FILEINFO_MIME_TYPE);
echo finfo_file($finfo, 'image.png');
image/png
Аналоги в других языках

Image type to mime type в Python

Библиотека imghdr или mimetypes.

import mimetypes
print(mimetypes.guess_type('photo.jpg')[0])
image/jpeg
JavaScript (Node.js)

Модуль mime-types из NPM.

const mime = require('mime-types');
console.log(mime.lookup('png'));
image/png

Image type to mime type в MySQL

Прямого аналога нет, но можно хранить MIME-типы как строки в таблицах.

Типичные ошибки
Ошибка 1: Передача несуществующей константы
echo image_type_to_mime_type(999);
Warning: image_type_to_mime_type(): Invalid image type in ...
Ошибка 2: Использование строкового значения
$result = image_type_to_mime_type('jpeg');
var_dump($result);
string(24) "application/octet-stream"
Изменения в версиях PHP

В PHP 8.0.0 функция стала строго типизированной. Аргумент $image_type ожидает тип int. Передача нецелого значения приводит к фатальной ошибке TypeError.

// PHP 7: преобразование строки "1" в целое число 1
// PHP 8: ошибка TypeError
Расширенные примеры
Пример 1: Валидация загружаемого изображения
Пример php
$tmp_path = $_FILES['image']['tmp_name'];
$detected_type = exif_imagetype($tmp_path);

if ($detected_type && in_array($detected_type, [IMAGETYPE_JPEG, IMAGETYPE_PNG])) {
    $mime = image_type_to_mime_type($detected_type);
    header('Content-Type: ' . $mime);
    readfile($tmp_path);
} else {
    echo 'Недопустимый тип изображения';
}
Пример 2: Сопоставление всех типов изображений
Пример php
$types = [
    IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG,
    IMAGETYPE_WEBP, IMAGETYPE_BMP, IMAGETYPE_ICO
];

foreach ($types as $type) {
    printf("%d -> %s
", $type, image_type_to_mime_type($type)); }
1 -> image/gif
2 -> image/jpeg
3 -> image/png
18 -> image/webp
6 -> image/bmp
17 -> image/x-icon
Пример 3: Создание массива соответствий
Пример php
$map = [];
for ($i = 1; $i <= 20; $i++) {
    $mime = @image_type_to_mime_type($i);
    if ($mime !== 'application/octet-stream') {
        $map[$i] = $mime;
    }
}
print_r($map);

PHP image_type_to_mime_type function comments

En
Image type to mime type Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype