Внимательно посмотрите на getimagesize .
Пример:
<?php
$size = getimagesize($filename);
$fp = fopen($filename, "rb");
if ($size && $fp) {
header("Content-type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// error
}
?>
Возвращает массив из 7 элементов.
Индекс 0 и 1 содержит соответственно ширину и высоту изображения.
Индекс 2 является одной из констант IMAGETYPE_XXX, указывающих тип изображения.
Индекс 3 - это текстовая строка с правильной строкой height = "yyy" width = "xxx", которую можно использовать непосредственно в теге IMG.
mime - соответствующий MIME-тип изображения. Эта информация может использоваться для доставки изображений с правильным заголовком HTTP Content-type:
каналов будет 3 для изображений RGB и 4 для изображений CMYK.
бит - это количество бит для каждого цвета.
Для некоторых типов изображений наличие значений каналов и битов может немного сбивать с толку. Например, GIF всегда использует 3 канала на пиксель, но количество бит на пиксель не может быть рассчитано для анимированного GIF с глобальной таблицей цветов.
При ошибке возвращается FALSE.