<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.image.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'function.getimagesize.php',
    1 => 'getimagesize',
    2 => 'Получает размер изображения',
  ),
  'up' => 
  array (
    0 => 'ref.image.php',
    1 => 'Функции GD и функции для работы с изображениями',
  ),
  'prev' => 
  array (
    0 => 'function.gd-info.php',
    1 => 'gd_info',
  ),
  'next' => 
  array (
    0 => 'function.getimagesizefromstring.php',
    1 => 'getimagesizefromstring',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/image/functions/getimagesize.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.getimagesize" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">getimagesize</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">getimagesize</span> &mdash; <span class="dc-title">Получает размер изображения</span></p>

 </div>
 <div class="refsect1 description" id="refsect1-function.getimagesize-description">
  <h3 class="title">Описание</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>getimagesize</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$filename</code></span>, <span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter reference">&$image_info</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>): <span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Функция <span class="function"><strong>getimagesize()</strong></span> определяет размер
   поддерживаемого графического файла и возвращает размеры изображения, тип файла и текстовую
   строку <code class="literal">height/width</code>, которые указывают в атрибутах
   <abbr title="Hyper Text Markup Language">HTML</abbr>-тега <code class="tag">IMG</code> и в <abbr title="Hypertext Transfer Protocol">HTTP</abbr>-заголовках
   типа содержимого.
  </p>
  <p class="para">
   Функция <span class="function"><strong>getimagesize()</strong></span> также умеет возвращать дополнительные сведения
   об изображении в параметре <code class="parameter">image_info</code>.
  </p>
  <div class="caution"><strong class="caution">Предостережение</strong>
   <p class="para">
    Функция ожидает, что путь к файлу в аргументе <code class="parameter">filename</code> указывает на корректный файл
    изображения. При передаче пути не на файл изображения функция иногда неправильно определяет файл
    как изображение и успешно возвращает результат, но но массив содержит бессмысленные значения.
   </p>
   <p class="para">
    Функцией <span class="function"><strong>getimagesize()</strong></span> не проверяют, представляет ли собой файл допустимое изображение.
    Для проверки графических файлов пользуются решениями наподобие модуля <a href="book.fileinfo.php" class="link">Fileinfo</a>, которые разработали для таких целей.
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Обратите внимание, отдельные части JPC- и JP2-изображений часто
    содержат компоненты с разной глубиной цвета, тогда элемент &quot;bits&quot;
    содержит максимальное значение, которое обнаружила функция. Файлы в формате JP2 также иногда содержат
    множественные кодовые потоки <code class="literal">multiple JPEG 2000 codestreams</code>,
    тогда функция <span class="function"><strong>getimagesize()</strong></span> вернёт значения первого потока кода,
    который обнаружит в корне файла.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Сведения об иконках извлекаются из иконки с наибольшим битрейтом.
   </span>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Изображения в формате GIF состоят из одного или нескольких кадров, где каждый кадр иногда
    занимает только часть изображения. Размер изображения, который возвращается
    функцией <span class="function"><strong>getimagesize()</strong></span>, указывает общий размер, который функция считала
    из дескриптора логического экрана.
   </span>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.getimagesize-parameters">
  <h3 class="title">Список параметров</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">filename</code></dt>
     <dd>
      <p class="para">
       Аргумент задаёт файл, сведения о котором требуется извлечь.
       В параметр передают путь на локальный или, если поддерживает конфигурация, удалённый файл.
       Передачу данных удалённого файла выполняют через
       <a href="wrappers.php" class="link">поддерживаемые потоки</a>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">image_info</code></dt>
     <dd>
      <p class="para">
       Необязательный параметр заполняется дополнительной информацией, которую модуль извлекает
       из файла изображения. В текущей реализации доступно извлечение
       APP-маркеров <abbr>JPG</abbr>-изображений в виде ассоциативного массива.
       Отдельные программы через эти APP-маркеры встраивают текст в изображение. Чаще остальных
       встраивают <a href="http://www.iptc.org/" class="link external">&raquo;&nbsp;IPTC</a>-сведения в APP13-маркер.
       Для преобразования двоичных данных APP13-маркера во что-то удобное для чтения
       вызывают функцию <span class="function"><a href="function.iptcparse.php" class="function">iptcparse()</a></span>.
      </p>
      <blockquote class="note"><p><strong class="note">Замечание</strong>: 
       <p class="para">
        Параметр <code class="parameter">image_info</code> поддерживает только
        файлы в формате <abbr>JFIF</abbr>.
       </p>
      </p></blockquote>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.getimagesize-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Функция возвращает массив из 7 элементов. Не каждый тип изображения содержит элементы с каналами
   <code class="literal">channels</code> и битрейтом <code class="literal">bits</code>.
  </p>
  <p class="para">
   Индексы 0 и 1 содержат ширину и высоту изображения.
  </p>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <p class="para">
    Отдельные форматы файлов хранят набор изображений или вообще не содержат
    изображений. Для таких форматов функцией <span class="function"><strong>getimagesize()</strong></span>
    невозможно определить размер изображения. Функция <span class="function"><strong>getimagesize()</strong></span>
    вернёт нули как значения высоты и ширины.
   </p>
  </p></blockquote>
   <blockquote class="note"><p><strong class="note">Замечание</strong>: 
   <span class="simpara">
    Функция <span class="function"><strong>getimagesize()</strong></span> не учитывает метаданные изображения,
    поэтому когда, например, значения Exif-флага <code class="literal">Orientation</code>
    поворачивают изображение на 90 или 270 градусов, индексы 0 и 1 меняются местами:
    индекс 0 содержит высоту, а индекс 1 — ширину.
   </span>
  </p></blockquote>
  <p class="para">
   Индекс 2 содержит константу семейства <strong><code><a href="image.constants.php#constant.imagetype-gif">IMAGETYPE_<span class="replaceable">*</span></a></code></strong>,
   которая обозначает тип изображения.
  </p>
  <p class="para">
   Индекс 3 содержит строку со значениями ширины и высоты изображения
   <code class="literal">height=&quot;yyy&quot; width=&quot;xxx&quot;</code>, которые указывают
   в атрибутах тега <abbr>IMG</abbr>.
  </p>
  <p class="para">
   <code class="literal">mime</code> — MIME-тип, который соответствует изображению.
   Эти сведения помогают корректно обрабатывать изображения на основании
   заголовка <code class="literal">Content-Type</code>:
   <div class="example" id="example-1">
    <p><strong>Пример #1 Функция <span class="function"><strong>getimagesize()</strong></span> и MIME-типы</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$size </span><span style="color: #007700">= </span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #0000BB">$filename</span><span style="color: #007700">, </span><span style="color: #DD0000">"rb"</span><span style="color: #007700">);<br /><br />if (</span><span style="color: #0000BB">$size </span><span style="color: #007700">&amp;&amp; </span><span style="color: #0000BB">$fp</span><span style="color: #007700">) {<br />    </span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">"Content-Type: </span><span style="color: #007700">{</span><span style="color: #0000BB">$size</span><span style="color: #007700">[</span><span style="color: #DD0000">'mime'</span><span style="color: #007700">]}</span><span style="color: #DD0000">"</span><span style="color: #007700">);<br />    </span><span style="color: #0000BB">fpassthru</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br />    exit;<br />} else {<br />    </span><span style="color: #FF8000">// Ошибка<br /></span><span style="color: #007700">}</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Элемент <code class="literal">channels</code> принимает значение 3 для RGB-картинок и 4 для цветовой модели CMYK.
  </p>
  <p class="para">
   <code class="literal">bits</code> — количество битов для каждого цвета.
  </p>
  <p class="para">
   Для отдельных типов изображений присутствие значений <code class="literal">channels</code>
   и <code class="literal">bits</code> иногда сбивает с толку. Формат <abbr title="Graphic Interchange Format">GIF</abbr>, например,
   представляет каждый пиксель 3-канальным цветом, но количество битов для хранения каждого пикселя невозможно однозначно вычислить
   для анимированных <abbr title="Graphic Interchange Format">GIF</abbr>-изображений, если опираться на глобальную таблицу цветов,
   поскольку кадры анимированного изображения часто содержит локальную палитру цветов.
  </p>
  <p class="para">
   Функция вернёт <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникнет ошибка.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.getimagesize-errors">
  <h3 class="title">Ошибки</h3>
  <p class="para">
   При недоступности файла по пути <code class="parameter">filename</code>
   функция <span class="function"><strong>getimagesize()</strong></span> выдаёт ошибку уровня
   <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>. При ошибке чтения файла функция <span class="function"><strong>getimagesize()</strong></span>
   выдаёт ошибку уровня <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>.
  </p>
  <p class="para">
   С PHP 8.0.0 при передаче в параметр <code class="parameter">filename</code> пустой строки
   выбрасывается ошибка <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.getimagesize-changelog">
  <h3 class="title">Список изменений</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Версия</th>
       <th>Описание</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>8.2.0</td>
       <td>
        Функция теперь возвращает фактические размеры, биты и каналы изображений в формате AVIF;
        раньше размеры сообщались как <code class="literal">0x0</code>,
        а биты и каналы не сообщались вообще.
       </td>
      </tr>

      <tr>
       <td>8.0.0</td>
       <td>
        Функция теперь выбрасывает ошибку <span class="exceptionname"><a href="class.valueerror.php" class="exceptionname">ValueError</a></span>,
        если в параметр <code class="parameter">filename</code> передали пустую строку;
        раньше выдавалась ошибка уровня <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong>, и функция возвращала значение <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
       </td>
      </tr>

      <tr>
       <td>7.1.0</td>
       <td>
        Добавили поддержку формата WebP.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.getimagesize-examples">
  <h3 class="title">Примеры</h3>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Пример #2 Пример получения размера изображения функцией <span class="function"><strong>getimagesize()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$width</span><span style="color: #007700">, </span><span style="color: #0000BB">$height</span><span style="color: #007700">, </span><span style="color: #0000BB">$type</span><span style="color: #007700">, </span><span style="color: #0000BB">$attr</span><span style="color: #007700">) = </span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #DD0000">"img/flag.jpg"</span><span style="color: #007700">);<br />echo </span><span style="color: #DD0000">"&lt;img src=\"img/flag.jpg\" </span><span style="color: #0000BB">$attr</span><span style="color: #DD0000"> alt=\"пример getimagesize()\" /&gt;"</span><span style="color: #007700">;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-3">
    <p><strong>Пример #3 Пример получения размера изображения по URL-адресу функцией getimagesize</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$size </span><span style="color: #007700">= </span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://www.example.com/gifs/logo.gif"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// Названия файлов с пробелами требуется правильно кодировать<br /></span><span style="color: #0000BB">$size </span><span style="color: #007700">= </span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #DD0000">"http://www.example.com/gifs/lo%20go.gif"</span><span style="color: #007700">);</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-4">
    <p><strong>Пример #4 Пример возврата IPTC-метаданных функцией getimagesize()</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$size </span><span style="color: #007700">= </span><span style="color: #0000BB">getimagesize</span><span style="color: #007700">(</span><span style="color: #DD0000">"testimg.jpg"</span><span style="color: #007700">, </span><span style="color: #0000BB">$info</span><span style="color: #007700">);<br />if (isset(</span><span style="color: #0000BB">$info</span><span style="color: #007700">[</span><span style="color: #DD0000">"APP13"</span><span style="color: #007700">])) {<br />    </span><span style="color: #0000BB">$iptc </span><span style="color: #007700">= </span><span style="color: #0000BB">iptcparse</span><span style="color: #007700">(</span><span style="color: #0000BB">$info</span><span style="color: #007700">[</span><span style="color: #DD0000">"APP13"</span><span style="color: #007700">]);<br />    </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$iptc</span><span style="color: #007700">);<br />}</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.getimagesize-notes">
  <h3 class="title">Примечания</h3>
  <blockquote class="note"><p><strong class="note">Замечание</strong>: <p class="para">Этой функции не требуется библиотека GD.</p></p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.getimagesize-seealso">
  <h3 class="title">Смотрите также</h3>
  <ul class="simplelist">
   <li><span class="function"><a href="function.image-type-to-mime-type.php" class="function" rel="rdfs-seeAlso">image_type_to_mime_type()</a> - Получение Mime-типа для типа изображения, возвращаемого
   функциями getimagesize, exif_read_data, exif_thumbnail, exif_imagetype</span></li>
   <li><span class="function"><a href="function.exif-imagetype.php" class="function" rel="rdfs-seeAlso">exif_imagetype()</a> - Determine the type of an image</span></li>
   <li><span class="function"><a href="function.exif-read-data.php" class="function" rel="rdfs-seeAlso">exif_read_data()</a> - Читает заголовки EXIF из файлов изображений</span></li>
   <li><span class="function"><a href="function.exif-thumbnail.php" class="function" rel="rdfs-seeAlso">exif_thumbnail()</a> - Получает встроенное превью изображения</span></li>
   <li><span class="function"><a href="function.imagesx.php" class="function" rel="rdfs-seeAlso">imagesx()</a> - Получение ширины изображения</span></li>
   <li><span class="function"><a href="function.imagesy.php" class="function" rel="rdfs-seeAlso">imagesy()</a> - Получение высоты изображения</span></li>
  </ul>
 </div>

</div><?php manual_footer($setup); ?>