GIF

 


[image]
GIF 이미지 예시
1. 개요
2. 특징
3. 시대에 심각하게 뒤쳐진 실태
3.1. 대체 현황
4. 기타
4.1. GIF 재생·다운로드 지원이 안되는 경우
4.2. 다른 확장자로 변환하기
4.3. 발음
5. 관련 문서


1. 개요


그림 파일 형식의 하나. Graphics Interchange Format의 약자로, 네트워크 상에서 그래픽을 압축하여 빠르게 전송하려는 목적으로 개발되었다. 따라서 압축률을 우선적으로 고려한 포맷이다. 1987년에 미국의 컴퓨서브(CompuServe)사에서 자사의 PC통신에서 사용하기 위해 처음 개발하였으며, 최종 버전은 1989년에 발표한 GIF89a이다. 데이터의 압축은 렘펠-지브-웰치(LZW; Lempel-Ziv-Welch) 알고리즘을 사용하여 압축한다. JPG 포맷이 개발되기 전까지 그림파일들은 대부분 이 형식이었다. 컴퓨서브 사에서 이 형식에 대해 유료 라이선스를 주장하지 않겠다고 공표했기 때문이다. 그랬다가 JPG가 나오면서 사장되나 싶었지만 고용량, 고속 통신 시대를 맞으면서 속칭 움짤이라고 부르는 animated GIF 형식으로 다시 인기를 끌고 있다.

2. 특징


  • 비손실 압축 알고리즘을 사용하는 무손실 압축 포맷이기 때문에 압축과정에서 손실은 발생하지 않는다. 하지만, 포맷 자체가 256 색상(8비트)밖에 지원하지 않으므로 256 색상보다 섬세하게 색을 표현하는 이미지[1]를 GIF 포맷으로 저장하면 256 색상으로 변환하는 과정에서 반드시 손실이 발생한다. 이러한 발색의 손실 때문에 GIF를 손실 압축 포맷으로 착각하는 사람도 많은데 압축 과정 자체는 팔레트로 각 픽셀의 정보를 변경한 이후로는 그대로 유지된다. 즉, GIF로 변환하면서 손실이 발생한 이미지를 다시 GIF로 저장할 때 팔레트의 변경이 없다면 거기서 또 손실이 발생하지는 않는다.[2] 즉 GIF는 다른 포맷의 이미지를 GIF 포맷으로 변환할 때 이미지 손실을 가져오는 변환 과정이 존재하지만 손실 압축 포맷은 아닌 것.
  • 여러 장의 이미지를 하나의 파일에 담을 수 있으며, 이를 Animated GIF 라고 부른다. Animated GIF는 단순히 GIF 이미지를 여러개 이어서 붙이는 방식으로 저장하는것도 가능하지만, 각각의 이미지에서 변화된 내용만을 적용하는 방식으로 저장하여 용량을 줄이는 것도 가능하다.
  • 투명 컬러를 지정하는 것이 가능하다. PNG처럼 알파값이 존재하는 것이 아니라 특정 컬러를 투명컬러로 지정하는 방식이다. PNG와 같이 정교하게 알파값을 지정하는 방식보다 나쁘기는 하지만,[3] PNG의 알파값을 지원하지 못하는 웹 브라우저가 있기 때문에[4] 예전에는 많이 사용했다. 지금은? 그 브라우저 자체가 미국 갔다.
  • GIF 포맷에 사용된 LZW 알고리즘은 Unisys사가 특허를 보유하고 있는 기술이었다. Unisys는 1999년, 뜬금없이 너 고소를 시전하며 특허료 청구를 요구했는데 이 때문에 그 전까지 GIF 포맷을 잘 지원해온 프로그램들이 모조리 GIF 지원을 빼는 사태가 벌어졌다. 1985년에 특허등록이 된 기술이므로 2004년경에 대부분의 나라에서 특허 유효기간으로 설정한 20년이 만료되어 그 이후 다시 아무런 제한없이 사용이 가능하게 되었다.
    • PNG 포맷은 처음부터 이 GIF의 대안으로 만든 것인데, GIF와 동등, 또는 그 이상의 성능을 발휘하면서 LZW 알고리즘의 라이센스 문제를 비껴갈 수 있는 공개된 포맷이 요구되었기 때문이다. 실제로 PNG는 애니메이션 기능을 제외하면 GIF를 완벽하게 대체할 수 있다. 다만 저 99년의 대량 소송 사태 때 만들어진 것은 아니고 실제 제작은 그보다 약간 앞서서 1996년에 첫 릴리즈가 되었다.

3. 시대에 심각하게 뒤쳐진 실태


GIF 자체가 오래된 기술이기에 압축률이 매우 심각하게 낮음은 물론[5] 색상 표현력도 형편없어 크고작은 문제를 야기한다.
트위터에 Animated GIF 파일을 업로드하면 자체적으로 MP4 동영상으로 변환하여 저장하는데, 이 경우 500 KB 수준의 GIF 파일이 100 KB 수준의 mp4 파일로 변환이 되기도 한다. H.264와 비교하면 무려 열배가 넘게 차이나기도 한다.
나무위키에서도 용량이 큰 GIF 파일은 MP4 파일로 변환해서 보여주는 것이 기본 설정이며, 루리웹에서도 2019년 3월 13일부터 MP4 변환을 지원한다.
색상은 현재 웹에서 볼수 있는 이미지들 중 16비트도 아니고 고작 256색만을 표현하는 포맷은 gif가 유일하다. 때문에 GIF 이미지는 뭘로 보든 화질이 눈에 띄게 나쁘다. GIF 사용을 멈춰주세요!
GIF 포맷은 후에 나온 PNG 포맷에 비해서 압축률도 떨어지고 확장성도 떨어지지만, 지원하는 프로그램 많아서 호환성이 좋고, 애니메이션을 구현하기 쉽다는 이유 때문에 아직까지 많이 사용되고 있다. 정지 화상은 PNG가 GIF의 뒤를 잇는 포맷으로 자리잡았으나, 애니메이션은 GIF를 대체하기 위한 APNG, WebP, BGF 등의 파일 형식이 등장하고 있음에도 브라우저에 따라서 지원하기도 하고 안하기도 하는 등 아직까지는 이렇다할 차세대 공통 표준이 없는 상태.
APNG인터넷 익스플로러(모든 버전)와 엣지 레거시(EdgeHTML 기반)에서 지원하지 않으며, 첫번째 프레임만 표시된다. WebP는 최신 브라우저에서만 지원하며 지원하지 않는 웹사이트가 많다. 그렇지만 이런 파일 형식들은 GIF에 비해 용량이 작아 로딩속도가 빠르고, 지원하는 색이 다양하다는 장점이 있다.

3.1. 대체 현황



4. 기타


HTML5SVG 등의 보급으로 어도비 플래시가 고사했듯, 차세대 애니메이션 이미지의 표준이 정해지면 GIF도 같은 운명을 맞게 될 것으로 보인다.
재미있게도 플래시가 처음 개발된 목적이 기존 애니메이션 GIF의 한계를 극복하기 위할 대체재로 개발된 것이었다. 하지만 GIF와 달리 벡터 그래픽 기반에 소리와 여러 기능들도 지원하며 플러그인이 필요해 부적절한 데다가, 보안에 취약하고 모바일에 제대로 못 대응한 탓에 플래시가 GIF보다 먼저 고사하였다.
GIF 파일을 올릴 때 일정 크기를 넘기면 업로드를 차단하거나 JPG 파일로 변환해서 올리는 일이 많다. 텀블러는 3 MB까지, 네이버 밴드는 5 MB까지, 루리웹은 12 MB(댓글은 1 MB)까지, 트위터카카오톡은 15 MB까지인 등.
일부 GIF 파일들은 심리적인 효과로 인하여 마치 소리가 들리는 것 같은 착각을 일으키기도 한다. 자세한 내용은 <송전탑#s-5> 문서, <음성지원#s-2> 문서 참고.
애니메이션 기능이 있으면서도 정지 화상으로도 널리 쓰이는 특성 때문에 움짤 낚시로도 쓰이곤 한다. 그냥 평범한 그림인 줄 알았는데 계속 보고 있다 보면 갑자기 움직이거나 다른 뭔가가 나타나는 것. 최악이면 귀신 얼굴이 갑툭튀하는 혐짤 테러로도 쓰이기도. 물론 GIF 파일이라고 별도의 표시를 하는 앱이나 사이트들도 있어 GIF 표시가 있으면 일단 의심부터 하기도 한다.

4.1. GIF 재생·다운로드 지원이 안되는 경우


움짤'움짤 재생·다운로드 지원이 안되는 경우' 문단 참조.

4.2. 다른 확장자로 변환하기


움짤'다른 확장자로 변환하기' 문단 참조.

4.3. 발음


[image]
발음은 /dʒɪf/('지프'에 가깝다)와 /ɡɪf/('기프'에 가깝다) 두 가지가 혼용돼서 사용되고 있다. 그런데 어느 쪽이 올바른 발음인지에 대한 논쟁이 일어나자, 참다 못한 GIF의 개발자인 스티브 윌하이트가 /dʒɪf/가 올바른 발음이라고 공언했다. 심지어 그는 표준 발음을 제시한 정도를 넘어서, /ɡɪf/는 아예 잘못된 발음이라고 했다.
사실 영어가 표음성이 매우 극악한 언어로 악명이 높다. 물론 영어 외에도 표음성이 매우 나쁜 언어도 많고 심지어 영어보다 표음성이 더 나쁜 언어도 있으나, 메이저한 언어 중에는 영어가 단연이다. 이런 고유 명사를 제대로 읽지 못하는 건 애교 수준이라고 생각하면 편하다. 이렇게 문자와 발음의 불일치가 발생하는 현상에 대해서는 대모음추이 참조.
아무튼 공식적으로는 '지프'로 발음하지만, 개발자라고 발음을 결정할 수 있는 건 아니라며 여전히 '기프'라고 발음하는 사람들도 많으며, GIF의 발음은 여전히 식지 않는 떡밥이다. 기프 측도 근거가 아주 없는 것은 아니어서, 'g 다음에 i가 오면 /ɡ/로 발음되는 경우도 많다[7]'고 주장하지만, /dʒ/로 발음되는 반례[8]도 많기 때문에 탕수육 부먹 vs 찍먹 논쟁처럼 병림픽을 벌이는 중이다.
한국어 사용자 한정이지만, GIF를 '지프'로 발음한다면 압축 파일 확장자(ZIP)와 혼동될 가능성도 있다. 그 외에 자동차 이름(Jeep)도 있고 해서 일반적인 발음상의 혼동 가능성을 고려한다면 '지프'보다는 '기프' 쪽이 좀 더 현실적이라고 볼 수도 있다.
혹은 'G가 Graphic의 첫자이므로 발음도 이에 따라야 한다'는 주장도 있다. 근데 여러 발음이 가능한 문자가 약어가 됐을 때 그 문자의 발음은 원래의 단어에서 쓰인 발음과 다른 경우가 많아서 이 주장에는 문제가 있다. 예를 들어 NATO의 A가 Atlantic(애틀랜틱)에서는 /æ/('애')로 읽히지만 약어인 NATO 자체의 A는 /eɪ/('에이')로 발음된다. 참고로 NATO를 한국어에서는 '나토'라고 읽지만 영어로는 /ˈneɪtoʊ/로 읽어서 '네이토'에 가깝다.
한국어에서는 대체로 라틴 문자 한 글자씩 끊어 읽은 '지 아이 에프'로 발음하므로 이런 논쟁은 없다. 약자는 대문자로 표기하고 한글자씩 끊어읽는 게 원칙이나, 현대 영어의 특성상 약자도 편의상 단어처럼 읽는 경향(Ex. ASAP(에이샙), WYSIWYG(위지위그))이 많기에 이런 논란이 일어나는 것이다. 마찬가지로 JPEG, PNG에도 주류 발음(/ˈdʒeɪpɛɡ/ '제이페그', /pɪŋ/ '핑')이 있지만 한국어에서는 대개 라틴 문자마다 끊어서 읽는다.
비슷한 예로 GNU, GNOME이 있다. 정식 발음은 /ɡnuː/('그누'), /ɡnoʊm/('그놈')[9]이지만 /nuː/('누'),[10] /noʊm/('놈')으로 읽어야 한다고 주장하는 사람들이 있다. 이들의 입장을 정리하면 현대 영어 발음에서 /ɡn/ 어두 자음군은 어색한 데다가, 원래 일반 명사인 gnu, gnome는 g가 묵음이므로 철자가 같은 GNU와 GNOME도 동일하게 발음하게 해야지, 사람들에게 /ɡ/ 음을 억지로 발음하도록 요구하는 건 과도하다는 것이다.

5. 관련 문서



[1] 문제는 사진등 자연물을 표현하거나 그라디에이션이 들어간 이미지 등 단순하지 않은 일반적인 이미지 대부분이 256색을 넘어간다는 것이다. RGB 채널에 공평하게 배분한다면 채널당 4~8단계 밖에 배분하지 못한다. 때문에 16비트 이후 색상처럼 RGB채널에 배분하는 형태가 아니라 8비트 코드 하나하나에 색상값을 할당하는 팔레트란 개념을 사용한다. 사실 원본 데이터의 정보 일부를 줄여 크기를 줄이는 과정이면 모두 손실 압축에 속하기에 팔레트 설정 과정도 일종의 데이터 크기를 줄이는 과정이긴 하다. 하지만 이런 것까지 압축으로 규정해버리면 아날로그 데이터를 디지털화 하는 과정의 멀티미디어 포맷은 모두 손실 알고리즘이 된다는 소리이므로 이런것을 압축으로 보진 않고 샘플링으로 정의한다. 즉 하나의 원본 디지털 데이터를 생성하는 과정이고 GIF는 이 이후에는 별도의 데이터 손실이 없으므로 무손실 압축 포맷이 되는 것.[2] 당연히 팔레트를 변경한다면 색상 정보가 전혀 다르게 바뀐다.[3] 예를 들면 반투명 그라디에이션 효과를 낼 수 없다. 그런 관계로 일러스트가 아닌 사진의 배경을 크롭한 GIF 이미지의 경우 브라우저 배경색에 따라 투명배경과의 경계선이 눈에 띄게 되는 경우가 많다.[4] IE 6은 지원하지 않으며, IE 7/8은 지원하기는 하나 CSS 알파와 동시에 사용할 경우 작동하지 않는 버그가 있다. 그 외의 현대 웹 브라우저는 모두 지원한다.[5] 같은 해상도의 PNG-24가 GIF보다 더 용량이 적다[6] 설정으로 끄거나 켤 수 있다.[7] girl, give, gift, gill, gig, giggle, girdle, giddy, gigabyte 등.[8] gin, giraffe, giant, gibberish, ginger, gigantic 등.[9] 영어에서 /ɡn/가 어두 자음군으로 쓰이기 어색하기 때문에 무표 모음(無標母音·default vowel)인 /ə/를 첨가하여 /gəˈnuː/('거누'), /ɡəˈnoʊm/('거놈') 식으로 2음절화하여 읽는 사람들도 있다. 영어에서는 GNU나 GNOME 말고도 자음군으로 읽기 어려운 조합의 자음 뒤에 /ə/를 첨가해 읽는 방식은 흔하다. 이건 한국어의 외래어에서 원어의 자음 뒤에 ㅡ(/ɯ/)를 첨가해 읽는 것(예를 들면 GNU를 누로 옮기는 게 한 예)과 유사하다(다만 영어와 달리 한국어에서는 무표 모음이 'ㅡ'이므로 'ㅡ'를 붙인다는 차이가 있을 뿐이다). 그리고 GNU의 경우 어말의 u를 표준적인 영국 영어 발음인 용인발음(Received Pronunciation) 등에서 u 발음을 /juː/('유')로 읽기 때문에 이런 철자-발음 대응에 익숙한 사람들은 /ɡnjuː/('그뉴')나 /ɡəˈnjuː/('거뉴')로 읽기도 한다.[10] 용인발음식으로는 /njuː/('뉴')