🖼️ 그래픽 포맷 | |||||
{{{#!wiki style="margin:0 -10px -5px; min-width:300px; min-height:calc(1.5em + 5px); word-break:keep-all" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-6px -1px -11px" | <colbgcolor=#555>비트맵 | <colbgcolor=#555>손실 압축 | JPEG | AVIF▶Lα · BPG▶α · FLIF▶α · HEIF▶ · WebP▶α · | RAW · DDS▶Lα · PSD▶Lα |
무손실 압축 | APNG▶α · DNG · EXRα · GIF▶ · PCX · PNGα · RGBEα · TGAα · TIFFLα | ||||
무손실 무압축 | BMPα | ||||
벡터 | AI · CDR · SVG | ||||
▶: 애니메이션 기능 지원 / L: 다중 레이어 지원 / α: 알파값 지원 | |||||
관련 틀: 그래픽 · 오디오 · 비디오 |
GIF 이미지 예시 |
1. 개요
Graphics Interchange Format그림 파일 형식의 하나. 네트워크 상에서 그래픽을 압축하여 빠르게 전송하려는 목적으로 개발되었다. 따라서 압축률을 우선적으로 고려한 포맷이다.
최초의 GIF 이미지[1] |
1992년 JPG가 나오면서 GIF가 사장되나 싶었지만 JPG와의 압축 특성 차이로 인해 손실 vs 무손실이라는 나름의 영역을 나눠 오래도록 쓰여왔다. 1999년 GIF 알고리즘에 특허 소송을 거는 회사가 나타난 바람에 GIF 대신은 PNG가 널리 쓰이게 되었다. 2005년은 Adobe Flash의 플짤이 널리 퍼지면서 GIF의 움짤은 찾아보기 힘들게 되었으나 Flash가 랜섬웨어 사고를 야기하며 단종된 바람에 GIF는 다시 생명을 연장하였다. 기술 발전 덕분에 과거의 움짤과는 그 퀄리티가 천지차이가 되었고, 동영상 갈무리 용도로 크게 인기를 끌고 있다. 따라서 20년 전에는 저용량 이미지의 대명사였지만, 현재는 고용량 이미지의 대명사가 되었다. 초고속 인터넷의 발달 덕분에 개의치 않는 사람도 많고, GIF를 그만 쓰자고 외치는 사람도 많다.
2. 특징
- 비손실 압축 알고리즘을 사용하는 무손실 압축 포맷이기 때문에 압축과정에서 손실은 발생하지 않는다. 다만, 포맷 자체가 256 색상(8비트)밖에 지원하지 않으므로 256 색상보다 섬세하게 색을 표현하는 이미지를 GIF 포맷으로 저장하면 256 색상으로 변환하는 과정에서 반드시 손실이 발생한다. 이러한 발색의 손실 때문에 GIF를 손실 압축 포맷으로 착각하는 사람도 많은데 압축 과정 자체는 팔레트로 각 픽셀의 정보를 변경한 이후로는 그대로 유지된다. 즉, GIF로 변환하면서 손실이 발생한 이미지를 다시 GIF로 저장할 때 팔레트의 변경이 없다면 거기서 또 손실이 발생하지는 않는다. 당연히 팔레트를 변경한다면 색상 정보가 전혀 다르게 바뀐다. 즉 GIF는 다른 포맷의 이미지를 GIF 포맷으로 변환할 때 이미지 손실을 가져오는 변환 과정이 존재하지만 손실 압축 포맷은 아닌 것.
- 문제는 사진 등 자연물을 표현하거나 그라디에이션이 들어간 이미지 등 단순하지 않은 일반적인 이미지 대부분이 256색을 넘어간다는 것이다. RGB 채널에 공평하게 배분한다면 채널당 4~8단계 밖에 배분하지 못한다. 때문에 16비트 이후 색상처럼 RGB채널에 배분하는 형태가 아니라 8비트 코드 하나하나에 색상값을 할당하는 팔레트란 개념을 사용한다. 사실 원본 데이터의 정보 일부를 줄여 크기를 줄이는 과정이면 모두 손실 압축에 속하기에 팔레트 설정 과정도 일종의 데이터 크기를 줄이는 과정이긴 하다. 하지만 이런 것까지 압축으로 규정해버리면 아날로그 데이터를 디지털화하는 과정의 멀티미디어 포맷은 모두 손실 알고리즘이 된다는 소리이므로 이런것을 압축으로 보진 않고 샘플링으로 정의한다. 즉 하나의 원본 디지털 데이터를 생성하는 과정이고 GIF는 이 이후에는 별도의 데이터 손실이 없으므로 무손실 압축 포맷이 되는 것.
- 여러 장의 이미지를 하나의 파일에 담을 수 있으며, 이를 Animated GIF라고 부른다. Animated GIF는 단순히 GIF 이미지를 여러개 이어서 붙이는 방식으로 저장하는것도 가능하지만, 각각의 이미지에서 변화된 내용만을 적용하는 방식으로 저장하여 용량을 줄이는 것도 가능하다.
- 투명 컬러를 지정하는 것이 가능하다. PNG처럼 알파값이 존재하는 것이 아니라 특정 컬러를 투명 컬러로 지정하는 방식이다. PNG와 같이 정교하게 알파값을 지정하는 방식보다 나쁘기는 하지만,[2] 예전에 많이 사용되었던 PNG의 알파값을 지원하지 못하는 웹 브라우저가 있어서[3] GIF가 계속 사용되었다. 다만 지금은 그 브라우저가 사라졌다.
- GIF 포맷에 사용된 LZW 알고리즘은 Unisys사가 특허를 보유하고 있는 기술이었다. Unisys는 1999년, 뜬금없이 너 고소를 시전하며 특허료 청구를 요구했는데 이 때문에 그 전까지 GIF 포맷을 잘 지원해온 프로그램들이 모조리 GIF 지원을 빼는 사태가 벌어졌다. 1985년에 특허등록이 된 기술이므로 2004년경에 대부분의 나라에서 특허 유효기간으로 설정한 20년이 만료되어 그 이후 다시 아무런 제한없이 사용이 가능하게 되었다.
- PNG 포맷은 처음부터 이 GIF의 대안으로 만든 것인데, GIF와 동등, 또는 그 이상의 성능을 발휘하면서 LZW 알고리즘의 라이센스 문제를 비껴갈 수 있는 공개된 포맷이 요구되었기 때문이다. 실제로 PNG는 애니메이션 기능을 제외하면 GIF를 완벽하게 대체할 수 있다. 다만 저 1999년의 대량 소송 사태 때 만들어진 것은 아니고 실제 제작은 그보다 약간 앞서서 1996년에 첫 릴리즈가 되었다.
3. 구식화
GIF는 오래된 기술이므로, 압축률이 낮은 것은 물론 색상 표현력도 256색을 벗어나지 못해 현재의 인터넷 환경에서는 한계가 명확하다.[4]트위터에 Animated GIF 파일을 업로드하면 자체적으로 MP4 동영상으로 변환하여 저장하는데, 이 경우 500 KB 수준의 GIF 파일이 100 KB 수준의 mp4 파일로 변환이 되기도 한다. H.264와 비교하면 열 배가 넘게 차이나기도 한다. 나무위키를 비롯한 주요 사이트에서는 고용량 GIF의 경우 자동으로 MP4 파일로 변환한다.
앞서 서술했듯이 색상 표현력이 256색에 불과하다 보니 큰 이미지일수록 다양한 표현을 담기 힘들다. 표준 256색을 벗어나 이미지에 최적화된 색상 코드를 저장하는 방식으로 겉보기 화질 자체는 초기의 표준 256색 GIF 인코딩 방식보다는 크게 향상되었지만, 그럼에도 256색이라는 근본적잌 한계는 벗어나지 못하다 보니 타 포멧에 비해서는 화질의 열화가 심하게 느껴지는 편이다.
GIF 포맷은 압축률도 떨어지고 표현력도 떨어지지만, 지원하는 프로그램이 많아서 호환성이 좋고, 애니메이션을 구현하기 쉽다는 이유 때문에 아직까지 많이 사용되고 있다. 정지 화상은 JPEG와 PNG가 GIF의 뒤를 잇는 포맷으로 자리잡았으나, 애니메이션은 GIF를 대체하기 위한 APNG, WebP, BGF 등의 파일 형식이 등장하고 있음에도 웹브라우저의 성향[5]에 따라서 지원여부가 갈리는 바람에 공통적으로 지원되는 GIF가 애니메이션 용도로 계속해서 사용되고 있다.
2020년에 들어서면서 구글 주도의 WebP를 수용하려는 움직임이 커지고 있다. Chrome[6], Microsoft Edge, Safari[7], Firefox, Opera, 삼성 인터넷, UC 브라우저 등 모바일과 PC를 가리지 않고 대부분의 메이저 웹 브라우저가 WebP를 지원하기 시작했다. ① 웹브라우저 절반이 구글의 크로뮴 브라우저로 사실상 통일 되었고, ② 모바일 웹브라우저의 나머지 절반인 애플 사파리가 WebP를 지원하길 결정한 덕분에 가능하게 된 일이다.
또한 GIF의 커스텀 256색상 설정을 인공지능을 이용하여 최적화하는 기술이 개발되고 있다. 이전까지는 단순히 색수가 많은 순서대로 256색을 정렬하고 나머지 색은 유사 색으로 끼워맞췄는데, 이제는 심층학습까지 활용하여 이미지에 맞는 최적의 색수를 인공지능이 직접 찾아내는 것이다. 작은 크기의 간단한 움짤 수준에서는 동영상과 차이가 크게 없어보일 정도로 GIF의 겉보기 표현력이 크게 향상되었다.
3.1. 대안
Swf- 일명 플짤. 2010년대 초반까지 GIF를 대체할 기세였다가 스마트폰 붐 및 어도비 플래시가 보안문제로 퇴출되면서 대멸종.- APNG - Internet Explorer(모든 버전)와 엣지 레거시(EdgeHTML 기반)에서 지원하지 않으며, 첫 번째 프레임만 표시된다. 2022년 이후로는 앞서 언급한 APNG 미지원 브라우저들이 도태되면서 이용자층이 있는 브라우저는 대개 지원하는 상태이지만, 이용 빈도 자체가 후술할 webp에 밀리는 상황이다.
- WebP - 구글에서 개발한 이미지 포맷으로 GIF보다 용량이 작아 로딩속도가 빠르고, 지원하는 색이 다양하며 2020년 이후에는 대부분의 웹 브라우저에서 지원할 정도로 가장 유력한 차세대 표준 후보로 떠올랐다.
- LottieFiles - 벡터 기반 애니메이션을 JSON 형식으로 나타낸 것. 같은 벡터기반의 플래시 애니메이션과는 다르게 간단한 일러스트 애니메이션에 특화된 것으로 현재 많은 모바일 어플리케이션이나 웹에서 사용되고 있다. 위의 예시들과 달리 새로운 특정 파일 포맷이 아니라, JSON 파일에 애니메이션 정보를 저장하고 Lottie 플레이어를 통해 움직이게 만드는 것이다.
- AVIF - 위 WebP보다 더 좋은 품질과 압축률을 보여주는 이미지 형식이다. AV1을 기반으로 애니메이션 움짤 이미지 파일을 만들 수 있으며 AV1 코덱 기반의 기술답게 움짤 파일의 용량은 GIF와 WebP에 비해 아주 작다. 다만 Windows 기본 이미지 뷰어와 안드로이드 갤러리에서는 첫 번째 프레임만 보이는 등 아직 호환성 문제가 남아 있다.
3.2. 우회 사이트
3.3. 움짤 GIF 문제와 해결
GIF 재생·다운로드 지원이 안될 때 해결하는 방법에 대한 내용은 움짤 문서
의 움짤 재생·다운로드 지원이 안되는 경우 부분을
참고하십시오.GIF 차단·데이터 절약이 절실할 때 해결하는 방법에 대한 내용은 움짤 문서
의 차단 / 데이터 절약 부분을
참고하십시오.GIF를 다른 포맷으로 변환하는 방법에 대한 내용은 움짤 문서
의 변환 부분을
참고하십시오.4. 여담
- 재미있게도 플래시가 처음 개발된 목적이 기존 애니메이션 GIF의 한계를 극복하기 위할 대체재로 개발된 것이었다. 하지만 GIF와 달리 벡터 그래픽 기반에 소리와 여러 기능들도 지원하며 플러그인이 필요해 부적절한 데다가, 보안에 취약하고 모바일 지원도 제대로 못한 탓에 플래시가 GIF보다 먼저 고사하였다.
- GIF 파일을 올릴 때 일정 크기를 넘기면 업로드를 차단하거나 JPG 파일로 변환해서 올리는 일이 많다. 텀블러는 3 MB까지, 네이버 밴드는 5 MB까지, 루리웹은 12 MB(댓글은 1 MB)까지, 트위터와 카카오톡은 15 MB까지인 등. 나무위키에서 업로드 가능한 최대 용량은 10MB이다. #
- 애니메이션 기능이 있으면서도 정지 화상으로도 널리 쓰이는 특성 때문에 움짤 낚시로도 쓰이곤 한다. 그냥 평범한 그림인 줄 알았는데 계속 보고 있다 보면 갑자기 움직이거나 다른 뭔가가 나타나는 것. 최악이면 귀신 얼굴이 갑툭튀하는 혐짤 테러로도 쓰이기도. 물론 GIF 파일이라고 별도의 표시를 하는 앱이나 사이트들도 있어 GIF 표시가 있으면 일단 의심부터 하기도 한다.
- 2022년 3월 14일 GIF 발명자인 스티븐 윌하이트(Stephen Wilhite)가 코로나바이러스감염증-19로 사망했다. 향년 74세. 1980년대 컴퓨서브에 근무하면서 GIF를 개발한 윌하이트는 이 공로를 인정받아 2014년 웨비 어워드(The Webby Awards)에서 평생공로상을 수상한 바 있다.#
- 모 인쇄업자가 gif 이미지의 인쇄를 요청받았다가 황당한 클레임을 들었다(@0103029). Gif로 인쇄된 결과물에서 이미지가 움직이지 않았기 때문이었다. 하지만 인쇄업자는 머글에 불과하여 아무런 대응도 할 수 없었다. 이 사연은 컴맹개그/2010년대 이후 문서에도 소개되어 있다.
4.1. 발음 문제
영화 캡틴 아메리카: 시빌 워를 패러디한 밈. 단, 캡틴 아메리카와 아이언맨이 등장하는 장면은 전작인 어벤져스에서 나왔다. |
발음은 /dʒɪf/('지프'에 가깝다)와 /ɡɪf/('기프'에 가깝다) 두 가지가 혼용돼서 사용되고 있다. 그런데 어느 쪽이 올바른 발음인지에 대한 논쟁이 일어나자, 참다 못한 GIF의 개발자인 스티븐 윌하이트가 /dʒɪf/가 올바른 발음이라고 공언했다. 심지어 그는 표준 발음을 제시한 정도를 넘어서, /ɡɪf/는 아예 잘못된 발음이라고 했다.
이로 인해 대부분이 '지프'로 발음하지만, 개발자라고 발음을 결정할 수 있는 건 아니라며[9] 여전히 '기프'라고 발음하는 사람들이 더 많기 때문에 GIF의 발음은 여전히 식지 않는 떡밥이다. 기프 측도 근거가 아주 없는 것은 아니어서, 'g 다음에 i가 오면 /ɡ/로 발음되는 경우도 많다[10]'고 주장하지만, /dʒ/로 발음되는 반례[11]도 많기 때문에 탕수육 부먹 vs 찍먹 논쟁처럼 병림픽을 벌이는 중이다.
한국어 사용자 한정이지만, GIF를 '지프'로 발음한다면 압축 파일 확장자(ZIP)와 혼동될 가능성도 있다. 그 외에 자동차 이름(Jeep)도 있고 해서 일반적인 발음상 혼동 가능성을 고려한다면 '지프'보다는 '기프' 쪽이 좀 더 현실적이라고 볼 수도 있다.
혹은 ''G'가 'Graphic'의 첫자이므로 발음도 이에 따라야 한다'는 주장도 있다. 'ASCII'는 '아스키'로 읽는다. 근데 여러 발음이 가능한 문자가 약어가 될 때 그 문자의 발음은 원래의 단어에서 쓰인 발음과 다른 경우가 많아서 이 주장에는 문제가 있다. 예를 들어, 'NATO'의 'A'가 'Atlantic(애틀랜틱)'에서는 /æ/('애')로 읽히지만 약어인 'NATO' 자체의 'A'는 /eɪ/('에이')로 발음된다. 참고로 'NATO'를 한국어에서는 '나토'라고 읽지만 영어로는 /ˈneɪtoʊ/로 읽어서 '네이토'에 가깝다.
한국어에서는 대체로 라틴 문자 한 글자씩 끊어 읽은 '지 아이 에프'로 발음하므로 이런 논쟁은 없다. 약자는 대문자로 표기하고 한글자씩 끊어읽는 게 원칙이나, 현대 영어의 특성상과 편의상은 약자도 단어처럼 읽는 경향(Ex. ASAP(에이샙), WYSIWYG(위지위그))이 많기에 이런 논란이 일어나는 것이다. 마찬가지로 'JPEG', 'PNG'에도 주류 발음(/ˈdʒeɪpɛɡ/ '제이페그', /pɪŋ/ '핑')이 있지만 한국어에서는 대개 라틴 문자마다 끊어서 읽는다.
비슷한 예로 GNU, GNOME이 있다. 정식 발음은 /ɡnuː/('그누'), /ɡnoʊm/('그놈')[12]이지만 /nuː/('누'),[13] /noʊm/('놈')으로 읽어야 한다고 주장하는 사람들이 있다. 이들의 입장을 정리하면 현대 영어 발음에서 /ɡn/ 어두 자음군은 어색한 데다가, 원래 일반 명사인 gnu, gnome는 g가 묵음이므로 철자가 같은 GNU와 GNOME도 동일하게 발음하게 해야지, 사람들에게 /ɡ/ 음을 억지로 발음하도록 요구하는 건 과도하다는 것이다.
5. 관련 문서
[1] 보잉 727로 추정된다. 수직꼬리날개에 엔진이 있는 삼발기에다 수평꼬리날개가 수직꼬리날개 위에 붙어있기 때문이다.[2] 예를 들면 반투명 그라디에이션 효과를 낼 수 없다. 그런 관계로 일러스트가 아닌 사진의 배경을 크롭한 GIF 이미지의 경우 브라우저 배경색에 따라 투명배경과의 경계선이 눈에 띄게 되는 경우가 많다.[3] IE 6은 지원하지 않으며, IE 7/8은 지원하기는 하나 CSS 알파와 동시에 사용할 경우 작동하지 않는 버그가 있다. 그 외의 현대 웹 브라우저는 모두 지원한다.[4] 이 단점은 옛날 컴퓨터 그래픽(고전게임) 스크린샷이나 클래식 픽셀 아트(2bit 4색, 4bit 16색, 8bit 256색)를 저장하는 포맷으로 적절하다는 특성이 되기도 한다. 이 경우 GIF가 JPG보다 선이 뚜렷하며 화질이 좋다. PNG는 GIF보다 나은 포맷이지만, 색상 수 조절 등 조금 귀찮은 설정을 해야 한다.[5] 파이어폭스는 독점포맷을 지원하지 않으려 하고, 인터넷 익스플로러와 애플 사파리는 자사 개발 포맷 위주로 지원하려 하는 등.[6] 웨일같은 The Chromium Projects 포함[7] Safari 14부터 지원[8] 설정으로 끄거나 켤 수 있지만 현재 설정에서 빠져버렸다.따라서 현 페이지에서 보이는 GIF파일 예시는 사실 동영상 파일이 재생되고 있는것이다.[9] 이 주장이 타당하다고 볼 수 있는 것은 GIF가 특정 회사의 등록상표가 아니기 때문이다.[10] girl, give, gift, gill, gig, giggle, girdle, giddy, gigabyte 등.[11] gin, giraffe, giant, gibberish, ginger, gigantic 등.[12] 영어에서 /ɡn/가 어두 자음군으로 쓰이기 어색하기 때문에 무표 모음(無標母音·default vowel)인 /ə/를 첨가하여 /gəˈnuː/('거누'), /ɡəˈnoʊm/('거놈') 식으로 2음절화하여 읽는 사람들도 있다. 영어에서는 GNU나 GNOME 말고도 자음군으로 읽기 어려운 조합의 자음 뒤에 /ə/를 첨가해 읽는 방식은 흔하다. 이건 한국어의 외래어에서 원어의 자음 뒤에 ㅡ(/ɯ/)를 첨가해 읽는 것(예를 들면 GNU를 그누로 옮기는 게 한 예)과 유사하다(다만 영어와 달리 한국어에서는 무표 모음이 'ㅡ'이므로 'ㅡ'를 붙인다는 차이가 있을 뿐이다). 그리고 GNU의 경우 어말의 u를 표준적인 영국 영어 발음인 용인발음(Received Pronunciation) 등에서 u 발음을 /juː/('유')로 읽기 때문에 이런 철자-발음 대응에 익숙한 사람들은 /ɡnjuː/('그뉴')나 /ɡəˈnjuː/('거뉴')로 읽기도 한다.[13] 용인발음식으로는 /njuː/('뉴')