Конец проигрывания Gif-анимации. Как определить?

Тема в разделе "Как сделать...", создана пользователем balemey, 6 янв 2014.

  1. balemey

    balemey Постоялец

    Регистр.:
    1 мар 2013
    Сообщения:
    95
    Симпатии:
    8
    Столкнулся с задачкой. Прошу гуру подсказать.
    Пользователь должен закачать 3 файла gif-анимации в свой аккаунт. В итоге эти 3 файла должны на их страничке проиграться один за одним по очереди.

    И так как я еще немного начинающий прошу помощи.

    Вопрос 1: Нужно определить является ли закачиваемый файл гиф-анимацией? (именно анимацией, что там больше 1 кадра), если удаленно закачивает то через заголовки как правильней ссылку узнать что это картинка? file_get_contents или curl (Подскажите как получить правильно ответ сервера)

    Вопрос 2: Как заставить их проигрываться по-очереди? гифки бывают циклические, да и просто как в коде понять что кадры кончились и подавай другую гифку.

    Прошу не пинать сильно за вопросы.
     
  2. alffcpu

    alffcpu Создатель

    Регистр.:
    23 окт 2013
    Сообщения:
    22
    Симпатии:
    56
    Здравствуйте,
    Вот что вам нужно по пункту 1.
    Перейти по ссылке
    Там file_get_contents сразу внутри, если не запрещены url для file_get_contents это на сервере то можете туда адрес картинки передать.

    А насчет пункта 2,
    Картинки отображаются браузером, через php можно только обработать их и вместе склеить, больше никак.
    Даже с помощью js думаю не определить какой кадр проигрывается. Так что если прямо вообще нужна анимация которую контролировать надо программно, то надо использовать что-то типо CSS спрайтов (это когда в одной большой картинке все фазы лежат, а вы просто видимую область двигаете).
     
  3. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    вам, скорее всего, при загрузке на сервер нужно будет дополнительно читать гифки, чтоб узнать их длинну для подгрузки следующего, но чтоб знать точное время проигрывания нужно иметь анимацию загруженой на клиенте, чтоб поставить хотя бы timeout на джаваскрипте для вызова следующей картинки. в противном случае задача может быть частично решена.
    чтоб узнать анимированый ли гиф, можно использовать имаджмеджик либо читать содержимое файла и по признакам определять, на интернетах есть примеры.
     
  4. Otto

    Otto

    Регистр.:
    12 май 2008
    Сообщения:
    484
    Симпатии:
    158
    Для 2 ого вопроса.
    Ещё думаю кастыль можно сделать через JS, выводить первый файл, знать сколько сек. проигривает, и делать слайдер на второй, и.т.д.
    Ещё можно дать флеш файлу проигрывать файлы, а грузить их туда через XML...
     
  5. Asin

    Asin

    Регистр.:
    18 авг 2008
    Сообщения:
    621
    Симпатии:
    390
    Можно редактором склеить 3 гифки в одну гифку