Задать вопрос

Что означает константа IMAGETYPE_COUNT?

Добрый день, уважаемые программисты. Есть у меня php скрипт ресайза изображений.
Для работы использую определение данных об изображении через функцию getimagesize()
И столкнулся с таким моментом, что есть изображения, про которые функция возвращает в массиве со вторым индексом значение 18. По интернету нашел список значений:
[IMAGETYPE_GIF] => 1
[IMAGETYPE_JPEG] => 2
[IMAGETYPE_PNG] => 3
[IMAGETYPE_SWF] => 4
[IMAGETYPE_PSD] => 5
[IMAGETYPE_BMP] => 6
[IMAGETYPE_TIFF_II] => 7
[IMAGETYPE_TIFF_MM] => 8
[IMAGETYPE_JPC] => 9
[IMAGETYPE_JP2] => 10
[IMAGETYPE_JPX] => 11
[IMAGETYPE_JB2] => 12
[IMAGETYPE_SWC] => 13
[IMAGETYPE_IFF] => 14
[IMAGETYPE_WBMP] => 15
[IMAGETYPE_JPEG2000] => 9
[IMAGETYPE_XBM] => 16
[IMAGETYPE_ICO] => 17
[IMAGETYPE_UNKNOWN] => 0
[IMAGETYPE_COUNT] => 18

Но по итогу, что за IMAGETYPE_COUNT так я и не нашел.
И вообще, странно, почему изображение возращает именно это значение?
Вот полный массив что вернула функция
array(6) { 
[0]=> int(715) 
[1]=> int(536) 
[2]=> int(18) 
[3]=> string(24) "width="715" height="536"" 
["bits"]=> int(8) 
["mime"]=> string(10) "image/webp" 
}

Интересно что mime image/webp, а вот расширение файла jpg. Картинка вроде не битая, везде открывается.
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Во-первых, вы нашли устаревший список, вам отдаётся IMAGETYPE_WEBP:
64919c4ddd753913616853.png
Во-вторых, константа IMAGETYPE_COUNT служебная и функцией getimagesize не возвращается.
Ответ написан
Комментировать
@rPman
Если я верно понимаю исходники, это фиктивное значение для enum, чтобы автоматически определять количество элементов в нем (последняя будет автоматически иметь значение равное количеству, если не переопределять их значение) - т.е. сколько типов описывают исходники.

Это по уму жуткий быдлокод, особенно без хотя бы комментария, чтобы нужно было это понимать.

p.s. ума не приложу где это может понадобиться
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Просто количество типов изображений, 18 штук, от 0 до 17.
Вот только список у вас устаревший. PHP 8.1:
var_dump(get_defined_constants());
// ...
// ["IMAGETYPE_WEBP"] => int(18)
// ["IMAGETYPE_AVIF"] => int(19)
// ["IMAGETYPE_COUNT"] => int(20)
// ...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы