#php #javascript #html #gif
#php #javascript #HTML #gif
Вопрос:
У меня много анимированных GIF-файлов на странице. Мне нужен скрипт или код, который может заморозить анимацию этих .gif-файлов, чтобы они не анимировались и не зависали на первом кадре.
В настоящее время фоном являются фоны ячеек таблицы, подобные этому:
<td background="animated_background_1.gif">
и
<td style="background-image:url('animated_background_2.gif');">
Комментарии:
1. Я не думаю, что это можно сделать в CSS / JS. Лучшее, что вы можете сделать, это извлечь первый кадр в PHP (и кэшировать его), а затем использовать его так, как вы сейчас используете свой gif. Таким образом, вы решите свою проблему, а также уменьшите потребление полосы пропускания, поскольку один кадр gif должен быть намного меньше, чем весь анимированный GIF-файл.
2. Все, о чем я могу думать, это о том, что вы создаете статическое изображение,
gif
когда загружаете анимированное, и с помощьюjavascript
заменяете два изображения в нужном событии3. Я помню, что в те времена, когда поддержка анимированных GIF была новой функцией в браузерах, вы могли остановить анимацию, нажав кнопку «Стоп», когда страница уже была загружена. Я сомневаюсь, что браузеры все еще делают это, и, конечно, в JS / CSS / HTML, о которых я знаю, нет способа предотвратить анимацию GIF, кроме как не использовать анимированные GIF-файлы в первую очередь. Как правило, вам следует избегать анимированных GIF-файлов, за исключением случаев, когда анимация действительно необходима. В противном случае вы просто тратите впустую пропускную способность.
4. @GordonM, в FF3.5 кнопка «Стоп» отключена для загруженных страниц, но вы можете нажать клавишу Esc, чтобы остановить gif-анимацию. Хотя, это то, что может сделать конечный пользователь (а не программист), и есть крошечный шанс остановить все анимации на первом кадре 😉
5. Обновление предыдущего комментария: в FF 3.6 есть эта функция. Не знаю о 3.5, так как у меня он не установлен.
Ответ №1:
HTML, используемый для отображения изображения (или в качестве фонового изображения или чего-либо еще):
<img src="giftopng.php?image=mypic.gif" alt="" />
Вызванный тестовый скрипт: «giftopng.php «
<?php
//Get image name from URL
$image=$_GET['image'];
//Load the image
$img = ImageCreateFromGif($image);
//Convert to PNG and send it to browser
if($img) {
header("Content-Type: image/png");
ImagePNG($img);
//Clean-up memory
ImageDestroy($img);
}
?>
Вы могли бы использовать что-то вроде этого (исходный код http://php.net/manual/en/function.imagecreatefromgif.php).
Если нагрузка слишком высока, вы могли бы кэшировать статическое изображение.
Ответ №2:
Взгляните на http://slbkbs.org/jsgif код, это могло бы помочь вам с этой проблемой.
jsgif — это анимированный букмарклет для проигрывания GIF-файлов с поддержкой паузы, покадрового просмотра, воспроизведения в обратном порядке и других функций, которые можно ожидать от видеоплеера.