내가 만든 GIF가 왜 이렇게 느립니까? 제공 ). 이것이 실제로 얻는 결과입니다. 내 브라우저 (Firefox

ImageMagick을 사용하여 png 모음을 단일 gif로 변환합니다. 이 gif가 최대한 빨리 반복되기를 원합니다.

이것은 대략 내가 기대하는 결과입니다 ( Wikipedia 제공 ).

예상 출력

이것이 실제로 얻는 결과입니다.

실제 출력

내 브라우저 (Firefox 17)에서 예상 gif는 실제 gif보다 두 배 이상 빠르게 실행됩니다. 각 프레임마다 지연이 0이되도록 지정했기 때문에 이것은 놀랍습니다.

먼저 Wikipedia에서 빌린 GIF를 폭발시켜 36 개의 png를 만들었습니다.

--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png

그런 다음 coalescepng를 하나의 gif로 다시 결합했습니다.

convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif

identify 각 프레임에 지연이 없음을 확인합니다.

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,

실제로 이것은 원본보다 지연이 적습니다.

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,

실제 gif는 예상 gif보다 지연이 적습니다. 그렇다면 예상되는 gif가 실제 gif보다 두 배 빠른 이유는 무엇입니까?



답변

나는 10ms (지연 = 1) 버전을 실험하고 만들었습니다.

10ms 지연 예

gif를 렌더링하는 프로그램은 0 분의 1 초 지연 속도를 따르지 않는 것 같습니다. 대신, 선택한 작은 값보다 훨씬 큰 값을 사용합니다.

그들이 왜 이런 일을하는지에 대해서는 말할 수 없습니다. 나는 두 가지 이상의 이유를 발견했으며 그 모든 추측이 가능합니다.

일반적으로 모든 경우에 최소 200 초의 지연을 사용하는 것이 좋습니다.

출처 (이것에 대한 여러 가지 이유가있는 방법을 보여줍니다. 일부는 비교적 오래되었습니다) :


답변

@DavidMah가 옳은 것 같습니다. 내 Linux 시스템에서 최소 지연은 0.5입니다.

convert -dispose none -delay 0.4 newton_%d.png[0-35] -coalesce output0.4.gif

여기에 이미지 설명을 입력하십시오

convert -dispose none -delay 0.5 newton_%d.png[0-35] -coalesce output0.5.gif

여기에 이미지 설명을 입력하십시오

convert -dispose none -delay 1 newton_%d.png[0-35] -coalesce output1.gif

여기에 이미지 설명을 입력하십시오

어떤 이유로 이미지가 브라우저에 제대로 표시되지 않는 것 같습니다. 로컬 이미지 뷰어 ( eom)를 사용하면 첫 번째 이미지는 원래 질문의 이미지보다 느리고 다른 두 이미지는 위키 백과보다 빠릅니다. 어쨌든 내 브라우저에만 문제가있는 경우를 대비하여 게시하고 있습니다. 어쨌든 위의 명령을 시도하면 더 나은 속도를 얻을 수 있습니다.


업데이트 : 두 가지 문제가있는 것 같습니다. 브라우저 (Linux에서 실행되는 파이어 폭스 및 크롬 이상)는 1.5 미만의 지연으로 생성 된 gif를 표시 할 수 없습니다. 1.5는 잘 작동하고 1.4는 느립니다. 내 이미지 뷰어는 0.5 이상의 지연을 처리 할 수 ​​있습니다. 위 이미지 중 하나를 다운로드하여 좋아하는 이미지 뷰어에서 열어보십시오. 또한 다음을 살펴보십시오.

convert -dispose none -delay 1.4 newton_%d.png[0-35] -coalesce output1.4.gif

여기에 이미지 설명을 입력하십시오

convert -dispose none -delay 1.5 newton_%d.png[0-35] -coalesce output1.5.gif

여기에 이미지 설명을 입력하십시오

UPDATE2 : @DavidMah는 아래 주석에서 소수점 값이 가장 가까운 정수로 반올림됨을 지적합니다. 따라서 1.4는 1로 반올림되고 너무 느리고 1.5는 2로 반올림됩니다.


답변

XxY지연 표기법을 사용하여 더 많은 성공을 거두었습니다 . 기본적으로는 x과 같습니다. /따라서 지정 -delay 1x20하면 프레임이 1/20 초 동안 표시됩니다.


답변