움짤을 가장 빠른 속도로 애니메이션 하려면 지연을 얼마로 해야하나?

GIF에는 복수 이미지를 하나의 파일에 집어넣어 차례로 표시하는 것으로 애니메이션 표시하는 기능이 있고, 간이적으로 무비를 사이트에 심는 수단으로서 이용되고 있다.

 

애니메이션 기능의 설정에서는 코마가 바뀔 때까지의 시간을 지정할 수 있지만, 사양의 한계까지 시간을 짧게하면 오히려 변경이 늦어져 버린다고 하는데, 그 이유는 뭐때문에 그럴까...

GIF에는 1987년에 공개된 GIF87a와 1990년에 공개된 GIF89a의 2종류의 사양이 있지만, 애니메이션을 지원하는 것은 GIF89a뿐이며, 2022년 시점에서 널리 이용되고 있는것도 GIF89a이다.

GIF89a의 애니메이션 기능에서는, 프레임마다 그 프레임을 표시하는 시간을 "0"에서부터 "0xffff(10진수라면 65535)"까지 100분의 1초 단위로 설정 가능하다. 예를 들어 값이 "5"이면 50ms 후에 다음 프레임으로 이행하고, 값이 최대치인 0xffff이면 다음 프레임으로 이행할 떄까지 655.35초 걸린다.



GIF89a의 사양을 확인하면 지연의 값에 관해서는 "if not 0"이라고 명기되어 있으며, 지연을 0으로 설정하면, 정상적으로 표시되지 않는다. 그럼 지연을 "1(10ms)"로 하면 된다는 것이 자연스러운 발상이지만, 지연 "1"의 움짝은 다음과 같다.

 


한편 지연을 2(20ms)로 설정하면 아래와 같다.

 


이것은 브라우저가 너무나도 민폐가 되는 "왔다갔다"하는 GIF를 규제하고 있기 때문으로, 예를 들면 Chromium이라면 아래와 같이 지연이 10ms 이하의 GIF 이미지는 지연이 100ms로 덮여진다.

 


FIrefox에서도 마찬가지로, 지연 설정이 10ms 이하인 GIF 이미지는 지연이 100ms가 된다고 한다. 소스 코드의 코멘트에서 망가진 툴이 디폴트값으로서 지연에 "0"을 설정하는 경우의 대책이라고도 기술되어 있다.

 


이와같이 주요 브라우저에서는 GIF 이미지의 10ms 이하의 지연이 100ms에 덮여지기 때문에, 가장 빠른 속도로 GIF를 애니메이션 시키려면 지연값으로 2를 이용해야 한다.