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

balemey

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

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

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

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

Прошу не пинать сильно за вопросы.
 
Здравствуйте,
Вот что вам нужно по пункту 1.
Для просмотра ссылки Войди или Зарегистрируйся
Там file_get_contents сразу внутри, если не запрещены url для file_get_contents это на сервере то можете туда адрес картинки передать.

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