Korzystam z ImageMagick, aby zmienić kolekcję pngs w pojedynczy gif. Chcę, aby ten gif był zapętlony tak szybko, jak to możliwe.
To mniej więcej wynik, którego oczekuję (dzięki Wikipedii ):
To jest wynik, który faktycznie otrzymuję:
W mojej przeglądarce (Firefox 17) oczekiwany gif działa ponad dwukrotnie szybciej niż rzeczywisty gif. To mnie zaskakuje, ponieważ określiłem, że każda ramka powinna mieć 0 opóźnienie.
Najpierw stworzyłem 36 pngów, eksplodując gif pożyczony z Wikipedii:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Potem coalesce
rekombinowałem pngs w jeden gif.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
potwierdza, że każda ramka nie ma opóźnienia:
identify.exe -format "%T, " output.gif
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Jest to w rzeczywistości mniejsze opóźnienie niż oryginał:
identify.exe -format "%T, " newton.gif
5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2,
Rzeczywisty gif ma mniejsze opóźnienie niż oczekiwany gif. Dlaczego oczekiwany gif jest dwa razy szybszy niż rzeczywisty gif?
źródło
-delay 2
.Odpowiedzi:
Eksperymentowałem i stworzyłem wersję 10ms (opóźnienie = 1).
Wydaje się, że programy, które renderują gify, zwykle nie honorują setnych sekundy opóźnień. Zamiast tego używają wartości znacznie większej niż wybrana niewielka wartość.
Nie mogę naprawdę komentować powodów, dla których to robią. Znalazłem więcej niż jeden powód i możliwe, że to wszystko spekulacje.
Ogólnie polecam, aby we wszystkich przypadkach użyć opóźnienia wynoszącego co najmniej dwieście sekund.
Źródła (które pokazują, jak wydaje się, że istnieje wiele powodów. Niektóre są stosunkowo stare):
źródło
Wygląda na to, że @DavidMah ma rację. W moim systemie Linux minimalne opóźnienie wynosi 0,5:
Z jakiegoś powodu obrazy wydają się nieprawidłowo wyświetlane w mojej przeglądarce. Korzystając z lokalnej przeglądarki zdjęć (
eom
), pierwszy obraz jest tak wolny jak ten w pierwotnym pytaniu, a oba pozostałe są szybsze niż wikipedia. I tak piszę na wypadek, gdyby był to problem specyficzny dla mojej przeglądarki. W każdym razie powinieneś uzyskać lepszą prędkość, jeśli wypróbujesz powyższe polecenia.AKTUALIZACJA: Wydaje się, że występują 2 problemy. Przeglądarki (przynajmniej Firefox i Chrome działające w systemie Linux) nie mogą wyświetlać gifów utworzonych z opóźnieniem <1,5. 1,5 działa dobrze, 1,4 działa wolno. Moja przeglądarka zdjęć radzi sobie z opóźnieniami 0,5 i wyższymi. Spróbuj pobrać jeden z powyższych obrazów i otwórz go w swojej ulubionej przeglądarce zdjęć. Zobacz także:
AKTUALIZACJA2: @DavidMah wskazuje w komentarzach poniżej, że wartości dziesiętne są zaokrąglane do najbliższej liczby całkowitej. Tak więc 1,4 jest zaokrąglane do 1, co jest zbyt wolne, podczas gdy 1,5 jest zaokrąglane do 2, co jest OK.
źródło
Odniosłem większy sukces, używając
XxY
notacji opóźniającej, zasadniczox
jest to jak a/
, więc jeśli określisz-delay 1x20
, ramka jest wyświetlana przez 1/20 sekundy.źródło