2012-03-31 4 views
0

Я хотел бы контролировать скорость анимированного GIF в апплете Java. Есть ли способ сделать это? Если нет, есть ли способ получить доступ к данным анимированного GIF, чтобы апплет мог рисовать изображение анимации по изображению самостоятельно?Как контролировать скорость анимированного GIF?

+0

* «Как контролировать скорость анимированного GIF в апплете Java?» * Точно так же, как это можно сделать в приложении. Поэтому «Апплет» не имеет значения. –

ответ

2

Я думаю, что частота кадров встроена в GIF. Вы могли каким-то образом извлечь изображения из GIF, но это сложнее, чем начать с отдельных изображений и оживить их в JS, что сложнее, чем воссоздать GIF с предпочтительной частотой кадров.

Если вы собираетесь использовать GIF только один раз, и частота кадров не изменится, просто заново создайте GIF. Если вам нужно изменить скорость, основанную на входах вашего апплета, вы можете использовать подход here. Он чередует между двумя gif, но нет ничего, что помешало бы вам загрузиться в PNG и чередоваться через массив из них.

0

Анимированный формат GIF состоит из данных для каждого кадра вместе с значением задержки (как долго это показывать). Задержка раздельна для каждого кадра и хранится как два байта и измеряется как сотня секунд.

Netscape (назад, когда это был веб-сайт), не мог показать кадры быстрее, чем 10 в секунду. Так много инструментов, которые только что сказали, закручивают его и устанавливают задержку для всех фреймов на 0. Множество старых gif и старых инструментов, сохраняют эти закрученные задержки кадров.

С более быстрыми компьютерами и браузерами они работали вокруг этого, проверяя, была ли какая-либо из фреймов задержка < = 50 мс (20+ кадров в секунду). ЕСЛИ они это сделали, задержка была увеличена до 100 мс (10 кадров в секунду).

В принципе, лучшим решением было бы просто исправить используемый вами GIF, чтобы иметь точные задержки кадров в них. Если это нецелесообразно, используйте тот же самый старый способ обхода. Разбейте фреймы из анимированного GIF и сделайте анимацию самостоятельно, по умолчанию установлена ​​задержка 100 мс, если указанная задержка равна < = 50 мс. Это даст вам то же поведение, что и в большинстве веб-браузеров.

Прочитайте об этом некоторое время назад. Подумайте большинство деталей, упомянутых в википедии (включая анимированный формат GIF и задержки на каждый кадр). Если вам действительно нужны какие-то солидные ссылки, я могу их выкопать.

Смежные вопросы