- GetImageSize и swf
- зверек
- boombick
- зверек
- boombick
- зверек
- мои ошибки
- Функция getimagesize()
- Параметры
- Возвращаемые значения
- Ошибки / Исключения
- Примеры
- Примечания
- Помощь Ошибка getimagesize
- xeops
- xeops
- Koppinger
- getimagesize
- Описание
- Список параметров
- Возвращаемые значения
- Ошибки
- Список изменений
- Примеры
- Примечания
- Смотрите также
- User Contributed Notes 24 notes
GetImageSize и swf
зверек
Новичок
GetImageSize и swf
Вот такой код не срабатывает для swf-файлов. Не выводится $x. И ошибок никаких не выдается.
Для gif, jpg все работает.
Причем эта байда только на сервере, на локалке все работает хорошо.
Из-за чего такое может быть?
И еще. В локалке, где работает, флажок ($x[2]) для swf файла равен 13. Хотя в мане сказано что 4 должен быть. Не понятно.
boombick
boombick.org
зверек
Новичок
А как флажок объяснить? Который должен быть 4, а выводится как 13?
boombick
boombick.org
Flash compressed format SWF:
Array
(
[0] => 468
[1] => 60
[2] => 13
[3] => width=»468″ height=»60″
[mime] => application/x-shockwave-flash
)
[2] : SWC = SWF-compressed value 13
зверек
Новичок
boombick
еще раз спасибо за отзывчивость
Мне мой хостер в ответ на жалобы о неработающей с swf getimagesize ответил следующее:
——————————-
эта проблема, с тем, что GetImageSize не работает с SWF при модульном zlib официально признана багом разработчиками PHP. она не решена до сих пор.
для того, чтобы заработала ваша функция, недостаточно будет поставить новейшую версию PHP — нужно перекомпилировать PHP в угоду этому багу. к сожалению, нет никакой гарантии, что после пересборки не откажется работать что-нибудь еще
————————————-
Скажите, это нормальный ответ для хостера?
Надо смириться и придумывать какие-то иные способы решения задачи, либо надо как-то бороться и требовать работоспособности функции?
И может тогда кто посоветует как программно узнать параметры swf-файла? интересуют widht и height. Может существуют какие-то решения? Какая-то альтернатива getimagesize?
Источник
мои ошибки
Параметры настройки UTF (mbstring и константа BX_UTF)
Ошибка! Сайт работает в UTF кодировке, настройки mbstring:
mbstring.func_overload=0
mbstring.internal_encoding=utf-8
требуется:
mbstring.func_overload=2
mbstring.internal_encoding=utf-8
Исправила в файле .htaccess (вместо 0 написала 2 и вместо пробелов поставила =). Протестировала выходит та же ошибка. Убрала комментарий вышла ошибка 500. закомментировала обратно. Как исправить?
——————————————————————————————————————————————
Размер стека и pcre.recursion_limit
Замечание: Возможны проблемы в работе с длинными строками из-за системных ограничений
Это еще не рассматривала.
——————————————————————————————————————————————
Отправка почты
Ошибка! Отправлено. Время отправки: 6.99 сек.
Проверка на наличие неотправленных сообщений
Ошибка! Есть ошибки при отправке системных почтовых сообщений, число неотправленных сообщений: 91
Определена константа BX_CRONTAB_SUPPORT в /bitrix/php_interface/dbconn.php, при этом должен быть настроен вызов агентов на cron.
Т.е. почта моя вообще не робит. На сервере все правильно настроила. Сообщения работают. Зашла на данный файл и . куда кого на что настраивать?
———————————————————————————————————————————————-
Функция getimagesize для swf
Замечание: Вставка swf роликов может не работать
———————————————————————————————————————————————-
Кодировка соединения
Ошибка! Сравнение соединения с базой данных должно быть utf8_unicode_ci, текущее значение: utf8_general_ci.
Кликнула на вопросит там рекомендация. Сделала. Проверила. Результат тот же.
—————————————————————————————————————————————————
Структура базы данных
Ошибка! Структура базы данных имеет ошибки (нет таблиц: 0, нет полей: 0, поля отличаются: 1, нет индексов: 0). Всего 1, автоматически могут быть исправлены: 0.
Как это решать вообще не представляю
Кто-нибудь помогите пожалуйста я не программист.
Источник
Функция getimagesize()
Функция getimagesize PHP определяет размер заданного изображения и возвращает этот размер вместе с типом файла и текстовой строкой, содержащей значения высоты / ширины, которая будет использоваться в HTML-теге IMG и соответствующем типе HTTP-содержимого .
getimagesize () также может возвращать дополнительную информацию в параметре imageinfo .
Примечание . Обратите внимание, что JPC и JP2 могут содержать компоненты с разной битовой глубиной. В этом случае значение « бит » является наивысшей битовой глубиной. Кроме этого файлы JP2 могут содержать несколько кодовых потоков JPEG 2000 . В этом случае getimagesize() возвращает значения для первого кодового потока, который встречается в корне файла.
Параметры
Указывает на файл, который нужно получить. Он может ссылаться на локальный файл или удаленный ресурс.
Необязательный параметр getimagesize PHP , позволяет извлечь расширенную информацию из файла изображения. В настоящее время он возвращает различные APP-маркеры JPG как ассоциативный массив. Некоторые программы используют эти APP-маркеры для вставки текстовой информации в изображения. Часто это используется для встраивания» IPTC информации в маркер APP13 . Вы можете использовать функцию iptcparse() для преобразования двоичного маркера APP13 во что-то читаемое.
Возвращаемые значения
Функция getimagesize() возвращает массив с 7 элементами. Не все типы изображений будут включать в себя элементы channels и bits .
Индекс 0 и 1 содержат соответственно ширину и высоту изображения.
Примечание : Некоторые форматы могут не содержать изображения или содержать несколько изображений. В этих случаях функция getimagesize() будет не в состоянии правильно определить размер изображения и возвратил 0 для значений ширины и высоты.
Индекс 2 является одной из констант IMAGETYPE_XXX , указывающих тип изображения.
Индекс 3 представляет собой string с корректной строкой height=»yyy» width=»xxx» , которая может использоваться непосредственно в теге IMG .
mime — соответствующий MIME-тип изображения. Эта информация может использоваться в getimagesize PHP для предоставления изображений с корректным HTTP-заголовком Content-type :
Пример №1 getimagesize () и MIME-типы
Значение channels будет 3 для RGB-изображений и 4 — для CMY-изображений .
bits — это количество битов для каждого цвета.
Для некоторых типов изображений наличие значений channels и bits запутанно. Например, формат GIF всегда использует 3 канала на пиксель. Но количество бит на пиксель не может быть рассчитано для анимированного GIF-изображения с глобальной таблицей цветов.
При ошибке возвращается значение FALSE .
Ошибки / Исключения
PHP getimagesize не работает, если доступ к изображению невозможен. Тогда функция генерирует предупреждение ( E_WARNING ). При ошибке чтения getimagesize() генерирует ошибку E_NOTICE .
| Версия | Описание |
| 5.3.0 | Добавлена поддержка иконок. |
| 5.2.3 | Ошибки чтения, сгенерированные этой функцией, понижены с E_WARNING до E_NOTICE. |
| 4.3.2 | Добавлена поддержка JPC, JP2, JPX, JB2, XBM и WBMP. |
| 4.3.2 | Для параметра imageinfo была добавлена поддержка JPEG 2000. |
| 4.3.0 | Добавлены значения channels и bits и для других типов изображений. |
| 4.3.0 | Добавлена поддержка SWC и IFF. |
| 4.2.0 | В getimagesize PHPдобавлена поддержка TIFF. |
| 4.0.6 | Добавлена поддержка BMP и PSD. |
Примеры
Пример №2 getimagesize()
Пример №3 getimagesize(URL)
Пример № 4 getimagesize(), возвращающая IPTC
Примечания
Примечание : Для функции не требуется наличие библиотеки изображений GD .
Примечания : Данная функция ожидает, что filename — действительный файл изображения. Если предоставляется не файл изображения, он может быть неправильно идентифицирован и PHP getimagesize не работает .
Не используйте функция getimagesize() для проверки, является ли файл допустимым изображением. Вместо этого используйте специально разработанные решения, такие как функцию Fileinfo() .
Пожалуйста, оставляйте ваши мнения по текущей теме материала. Мы очень благодарим вас за ваши комментарии, отклики, лайки, подписки, дизлайки!
Источник
Помощь Ошибка getimagesize
xeops
Народ, кто знает в чем проблема?
Имеется 1С-Битрикс 18.3 Управление сайтом. Малый бизнес
При запуске тестирования выдает ошибку:
Функция getimagesize для swf (check_getimagesize): Warning
Замечание. File not found: /var/www/user/data/www/mzvuk.by/bitrix/modules/fileman/install/components/bitrix/player/mediaplayer/player
Смотрю файлы по этому пути и не понимаю, что там должно было быть? Какого типа это должен был быть файл? Скрипт или что-то еще?
xeops
Koppinger
Network engineer
Народ, кто знает в чем проблема?
Имеется 1С-Битрикс 18.3 Управление сайтом. Малый бизнес
При запуске тестирования выдает ошибку:
Функция getimagesize для swf (check_getimagesize): Warning
Замечание. File not found: /var/www/user/data/www/mzvuk.by/bitrix/modules/fileman/install/components/bitrix/player/mediaplayer/player
Смотрю файлы по этому пути и не понимаю, что там должно было быть? Какого типа это должен был быть файл? Скрипт или что-то еще?
Эта проблема описана многими. Google в помощь.
Для работы с графическими файлами в продукте используются стандартные PHP функции. В частности, GetImageSize, при работе с которой возникает проблема, если Zlib в PHP подключается в виде внешнего модуля.
Проверить работу функции можно кодом:
Решить проблему можно, выполнив статическую компиляцию модуля Zlib.
Если у вас нет возможности изменить конфигурацию PHP, можно отключить опцию Compressed movie при сохранении флеш-баннеров.
Источник
getimagesize
(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Получение размера изображения
Описание
Функция getimagesize() определит размер любого заданного, поддерживаемого изображения и вернёт этот размер вместе с типом файла и текстовой строкой height/width , которую можно будет использовать внутри тега HTML IMG , а также вернёт соответствующий тип содержимого HTTP .
Также getimagesize() может вернуть дополнительные сведения об изображении через аргумент image_info .
Функция ожидает, что filename является корректным файлом изображения. Если будет передан файл не содержащий изображения, он может быть некорректно интерпретирован как изображение и функция завершится успешно, но массив при этом будет содержать бессмысленные значения.
Не используйте getimagesize() для проверки того, что файл является изображением. Для этих целей используйте модуль Fileinfo.
Замечание: Обратите внимание на тот факт, что отдельные части JPC и JP2 изображений могут иметь различную глубину цвета. В этом случае в параметре «bits» будет стоять максимальное значение из всех обнаруженных. Также JP2 файлы могут содержать несколько кодовых потоков JPEG 2000 . В таком случае getimagesize() вернёт значения для первого такого потока, который будет обнаружен функцией в корне файла.
Замечание: Сведения об иконках извлекаются из иконки с наибольшим битрейтом.
Замечание: Изображения GIF состоят из одного или нескольких кадров, где каждый кадр может занимать только часть изображения. Размер изображения, возвращаемый getimagesize() , будет являться общим размером (прочитанным из дескриптора логического экрана).
Список параметров
Этот аргумент задаёт файл, сведения о котором будут извлекаться. Это может быть локальный или удалённый (зависит от конфигурации) файл. Передача данных удалённого файла должна осуществляться одним из поддерживаемых потоков.
Этот необязательный аргумент позволяет извлечь некоторые расширенные сведения из файла изображения. На данный момент можно получать различные JPG APP маркеры в виде ассоциативного массива. Некоторые программы используют эти маркеры для встраивания текста в картинку. Наиболее часто встраивают » IPTC сведения в APP13 маркер. Для преобразования двоичных данных APP13 маркера во что-то удобочитаемое можно воспользоваться функцией iptcparse() .
image_info поддерживает только файлы JFIF .
Возвращаемые значения
Возвращает массив из 7 элементов. Не все типы изображений содержат элементы с каналами ( channels ) и битрейтом ( bits ).
Индексы 0 и 1 содержат ширину и высоту изображения.
Некоторые форматы файлов могут хранить несколько изображений или не содержать изображения вообще. В таких случаях getimagesize() не сможет определить размер изображения. getimagesize() вернёт нули в качестве значений высоты и ширины.
Индекс 2 содержит одну из констант типа изображения IMAGETYPE_XXX.
Индекс 3 содержит строку со значениями ширины и высоты изображения height=»yyy» width=»xxx» , которая может быть использована внутри IMG тега.
mime — соответствующий MIME-тип изображения. Эти сведения используются для корректной обработки изображения на основании заголовка Content-type :
Пример #1 getimagesize() и MIME типы
channels принимает значение 3 для RGB картинок и 4 для CMYK.
bits — глубина цвета, число бит для каждого цвета.
В случае возникновения ошибки функция вернёт false .
Ошибки
Если доступ к файлу filename невозможен, getimagesize() вызовет ошибку уровня E_WARNING . В случае возникновения ошибки чтения файла getimagesize() вызовет ошибку уровня E_NOTICE .
Список изменений
| Версия | Описание |
|---|---|
| 7.1.0 | Добавлена поддержка WebP. |
Примеры
Пример #2 Пример использования getimagesize()
Пример #3 getimagesize (URL)
// если в имени файла есть пробелы, учтите это должным образом
$size = getimagesize ( «http://www.example.com/gifs/lo%20go.gif» );
Пример #4 getimagesize() возвращающая 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() — Получение высоты изображения
User Contributed Notes 24 notes
As noted below, getimagesize will download the entire image before it checks for the requested information. This is extremely slow on large images that are accessed remotely. Since the width/height is in the first few bytes of the file, there is no need to download the entire file. I wrote a function to get the size of a JPEG by streaming bytes until the proper data is found to report the width and height:
// Retrieve JPEG width and height without downloading/reading entire image.
function getjpegsize ( $img_loc ) <
$handle = fopen ( $img_loc , «rb» ) or die( «Invalid file stream.» );
$new_block = NULL ;
if(! feof ( $handle )) <
$new_block = fread ( $handle , 32 );
$i = 0 ;
if( $new_block [ $i ]== «\xFF» && $new_block [ $i + 1 ]== «\xD8» && $new_block [ $i + 2 ]== «\xFF» && $new_block [ $i + 3 ]== «\xE0» ) <
$i += 4 ;
if( $new_block [ $i + 2 ]== «\x4A» && $new_block [ $i + 3 ]== «\x46» && $new_block [ $i + 4 ]== «\x49» && $new_block [ $i + 5 ]== «\x46» && $new_block [ $i + 6 ]== «\x00» ) <
// Read block size and skip ahead to begin cycling through blocks in search of SOF marker
$block_size = unpack ( «H*» , $new_block [ $i ] . $new_block [ $i + 1 ]);
$block_size = hexdec ( $block_size [ 1 ]);
while(! feof ( $handle )) <
$i += $block_size ;
$new_block .= fread ( $handle , $block_size );
if( $new_block [ $i ]== «\xFF» ) <
// New block detected, check for SOF marker
$sof_marker = array( «\xC0» , «\xC1» , «\xC2» , «\xC3» , «\xC5» , «\xC6» , «\xC7» , «\xC8» , «\xC9» , «\xCA» , «\xCB» , «\xCD» , «\xCE» , «\xCF» );
if( in_array ( $new_block [ $i + 1 ], $sof_marker )) <
// SOF marker detected. Width and height information is contained in bytes 4-7 after this byte.
$size_data = $new_block [ $i + 2 ] . $new_block [ $i + 3 ] . $new_block [ $i + 4 ] . $new_block [ $i + 5 ] . $new_block [ $i + 6 ] . $new_block [ $i + 7 ] . $new_block [ $i + 8 ];
$unpacked = unpack ( «H*» , $size_data );
$unpacked = $unpacked [ 1 ];
$height = hexdec ( $unpacked [ 6 ] . $unpacked [ 7 ] . $unpacked [ 8 ] . $unpacked [ 9 ]);
$width = hexdec ( $unpacked [ 10 ] . $unpacked [ 11 ] . $unpacked [ 12 ] . $unpacked [ 13 ]);
return array( $width , $height );
> else <
// Skip block marker and read block size
$i += 2 ;
$block_size = unpack ( «H*» , $new_block [ $i ] . $new_block [ $i + 1 ]);
$block_size = hexdec ( $block_size [ 1 ]);
>
> else <
return FALSE ;
>
>
>
>
>
return FALSE ;
>
?>
There’s a code snippet for getting JPEG image dimensions by getting only first few bytes of the file, but it doesn’t work for PNG files, so I wrote one. It will download only the first 24 bytes instead of the whole image, and thus being much faster than getimagesize() and it will save bandwidth at the same time:
// Retrieve PNG width and height without downloading/reading entire image.
function getpngsize ( $img_loc ) <
$handle = fopen ( $img_loc , «rb» ) or die( «Invalid file stream.» );
Источник