getimagesize

(PHP 4, PHP 5, PHP 7, PHP 8)

getimagesizeПолучает размер изображения

Описание

getimagesize(string $filename, array &$image_info = null): array|false

Функция getimagesize() определяет размер поддерживаемого графического файла и возвращает размеры изображения, тип файла и текстовую строку height/width, которые указывают в атрибутах HTML-тега IMG и в HTTP-заголовках типа содержимого.

Функция getimagesize() также умеет возвращать дополнительные сведения об изображении в параметре image_info.

Предостережение

Функция ожидает, что путь к файлу в аргументе filename указывает на корректный файл изображения. При передаче пути не на файл изображения функция иногда неправильно определяет файл как изображение и успешно возвращает результат, но но массив содержит бессмысленные значения.

Функцией getimagesize() не проверяют, представляет ли собой файл допустимое изображение. Для проверки графических файлов пользуются решениями наподобие модуля Fileinfo, которые разработали для таких целей.

Замечание: Обратите внимание, отдельные части JPC- и JP2-изображений часто содержат компоненты с разной глубиной цвета, тогда элемент "bits" содержит максимальное значение, которое обнаружила функция. Файлы в формате JP2 также иногда содержат множественные кодовые потоки multiple JPEG 2000 codestreams, тогда функция getimagesize() вернёт значения первого потока кода, который обнаружит в корне файла.

Замечание: Сведения об иконках извлекаются из иконки с наибольшим битрейтом.

Замечание: Изображения в формате GIF состоят из одного или нескольких кадров, где каждый кадр иногда занимает только часть изображения. Размер изображения, который возвращается функцией getimagesize(), указывает общий размер, который функция считала из дескриптора логического экрана.

Список параметров

filename

Аргумент задаёт файл, сведения о котором требуется извлечь. В параметр передают путь на локальный или, если поддерживает конфигурация, удалённый файл. Передачу данных удалённого файла выполняют через поддерживаемые потоки.

image_info

Необязательный параметр заполняется дополнительной информацией, которую модуль извлекает из файла изображения. В текущей реализации доступно извлечение APP-маркеров JPG-изображений в виде ассоциативного массива. Отдельные программы через эти APP-маркеры встраивают текст в изображение. Чаще остальных встраивают » IPTC-сведения в APP13-маркер. Для преобразования двоичных данных APP13-маркера во что-то удобное для чтения вызывают функцию iptcparse().

Замечание:

Параметр image_info поддерживает только файлы в формате JFIF.

Возвращаемые значения

Функция возвращает массив из 7 элементов. Не каждый тип изображения содержит элементы с каналами channels и битрейтом bits.

Индексы 0 и 1 содержат ширину и высоту изображения.

Замечание:

Отдельные форматы файлов хранят набор изображений или вообще не содержат изображений. Для таких форматов функцией getimagesize() невозможно определить размер изображения. Функция getimagesize() вернёт нули как значения высоты и ширины.

Замечание: Функция getimagesize() не учитывает метаданные изображения, поэтому когда, например, значения Exif-флага Orientation поворачивают изображение на 90 или 270 градусов, индексы 0 и 1 меняются местами: индекс 0 содержит высоту, а индекс 1 — ширину.

Индекс 2 содержит константу семейства IMAGETYPE_*, которая обозначает тип изображения.

Индекс 3 содержит строку со значениями ширины и высоты изображения height="yyy" width="xxx", которые указывают в атрибутах тега IMG.

mime — MIME-тип, который соответствует изображению. Эти сведения помогают корректно обрабатывать изображения на основании заголовка Content-Type:

Пример #1 Функция getimagesize() и MIME-типы

<?php

$size
= getimagesize($filename);
$fp = fopen($filename, "rb");

if (
$size && $fp) {
header("Content-Type: {$size['mime']}");
fpassthru($fp);
exit;
} else {
// Ошибка
}

?>

Элемент channels принимает значение 3 для RGB-картинок и 4 для цветовой модели CMYK.

bits — количество битов для каждого цвета.

Для отдельных типов изображений присутствие значений channels и bits иногда сбивает с толку. Формат GIF, например, представляет каждый пиксель 3-канальным цветом, но количество битов для хранения каждого пикселя невозможно однозначно вычислить для анимированных GIF-изображений, если опираться на глобальную таблицу цветов, поскольку кадры анимированного изображения часто содержит локальную палитру цветов.

Функция вернёт false, если возникнет ошибка.

Ошибки

При недоступности файла по пути filename функция getimagesize() выдаёт ошибку уровня E_WARNING. При ошибке чтения файла функция getimagesize() выдаёт ошибку уровня E_NOTICE.

Список изменений

Версия Описание
8.2.0 Функция теперь возвращает фактические размеры, биты и каналы изображений в формате AVIF; раньше размеры сообщались как 0x0, а биты и каналы не сообщались вообще.
7.1.0 Добавили поддержку формата WebP.

Примеры

Пример #2 Пример получения размера изображения функцией getimagesize()

<?php

list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo
"<img src=\"img/flag.jpg\" $attr alt=\"пример getimagesize()\" />";

?>

Пример #3 Пример получения размера изображения по URL-адресу функцией getimagesize

<?php

$size
= getimagesize("http://www.example.com/gifs/logo.gif");

// Названия файлов с пробелами требуется правильно кодировать
$size = getimagesize("http://www.example.com/gifs/lo%20go.gif");

?>

Пример #4 Пример возврата IPTC-метаданных функцией getimagesize()

<?php

$size
= getimagesize("testimg.jpg", $info);
if (isset(
$info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}

?>

Примечания

Замечание:

Этой функции не требуется библиотека GD.

Смотрите также

  • image_type_to_mime_type() - Получение Mime-типа для типа изображения, возвращаемого функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • exif_imagetype() - Determine the type of an image
  • exif_read_data() - Читает заголовки EXIF из файлов изображений
  • exif_thumbnail() - Получает встроенное превью изображения
  • imagesx() - Получение ширины изображения
  • imagesy() - Получение высоты изображения