Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> is_animated_gif 
:(
    Опции темы
maxipub
Дата 22.10.2009, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Как можно узнать, является ли некий gif файл анимированным? Желательно, наиболее компактным и простым путем.
PM MAIL   Вверх
maxipub
Дата 27.10.2009, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



Это настолько сложно? smile 
PM MAIL   Вверх
Ипатьев
Дата 27.10.2009, 08:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Я думаю, да.
Найти в гугле описание формата, подумать, какой из признаков однозначно укажет на анимированность гифа и прочитать его из файла.
Это далеко не всем под силу.
PM MAIL   Вверх
skyboy
Дата 27.10.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



вбил в google "php gif frames count"
первая же ссылка в списке ведет в ман, где в первом же комментарии к imagecreatefromgif описываются даже несколько функций для определения анимированности.

PM MAIL   Вверх
icewind
Дата 27.10.2009, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Не все так глухо  smile 

Идем в гугль, находим спецификацию формата здесь или здесь, читаем и понимаем что анимированный гиф просто состоит из последовательности кадров(статических гифок). Далее смотрим что у них может быть общего... А общие у них заголовочные байты. Соответственно для определения наличия в изображении нескольких кадров нужно найти несколько заголовков. А именно:
Код

\x00\x21\xF9\x04

статическая последовательность в 4 байта (начало заголовка). Далее идут 4 байта, которые могут варьироваться и, наконец, закрывающие заголовок два байта
Код

\x00\x2C

Таким образом для определения можно написать что-то типа этого(писал на коленке... Можно сделать и по-другому)

Код

function is_animated_gif( $filename )
{
   $res = null;
   if( !file_exists($filename) || false === ($res = fopen($filename, 'rb')) )
   {
      return false;
   }
   $frames_count = 0;
   while( !feof($res) && 2 > $frames_count ) //Нам не нужно больше 2х кадров
   {
      $chunk = fread($res, 1024 * 30); //Считываем по 30 килобайт за проход
      $m = array();
      if( preg_match_all('~\x00\x21\xF9\x04.{4}\x00\x2C~s', $chunk, $m) )
      {
         $frames_count += count($m[0]);
      }      
   }
   fclose($res);
   return 1 < $frames_count;
}

echo ( is_animated_gif('test.gif') ) ? 'Animated!' : 'Not animated';


skyboy, вот я велосипедист  smile коменты к imagecreatefromgif посмотреть не догадался  smile 


Это сообщение отредактировал(а) icewind - 27.10.2009, 10:33


--------------------
user posted image
PM MAIL Skype   Вверх
skyboy
Дата 27.10.2009, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(icewind @  27.10.2009,  09:29 Найти цитируемый пост)
skyboy, вот я велосипедист

ну, там-то тоже "самописный рукотворный код". тоже велосипеды, просто чужие smile
PM MAIL   Вверх
maxipub
Дата 3.11.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 517
Регистрация: 22.10.2009

Репутация: нет
Всего: 1



благодарю за помощь!

Ипатьев, если вы такие умные, что тут делаете?
PM MAIL   Вверх
Ипатьев
Дата 3.11.2009, 16:12 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Делюсь знаниями.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.