'포맷'에 해당되는 글 1건

  1. 2010.06.20 PNG, 너는 또 무엇이냐? 13
PNG, 너는 또 무엇이냐?

PNG, 세상에 태어나다

때는 바야흐로 1995년. 벌써 15년이나 된 오래된 이야기입니다.

GIF 압축 방식에 사용된 LZW 알고리즘에 대해 유니시스사가 특허를 적용할 것이라고 발표했습니다.

지난번 포스팅에서 GIF는 1987년 미국의 컴퓨서브사가 처음 개발하였다고 했는데, 당시에 이 LZW 알고리즘을 사용하면서 해당 알고리즘이 저작권이 있는 줄 몰랐습니다. 유니시스사는 1994년, 이 알고리즘을 사용하는 것에 대해 특허료를 받겠다고 공고하였고, 비 상업적으로 사용하는 소프트웨어에 한해서는 특허료를 받지 않았습니다.

서두에 말했던, 1995년 유니시스사가 발표한 내용은 이러한 비 사용 소프트웨어 및 그 사용자에게도 특허료를 받을 것이라는 내용이었습니다. 당연히 수 많은 반발을 야기했습니다. 이러한 과정 속에서 '어떤 대체 수단'에 사용자들은 목말라 했고, 그러한 배경은 PNG가 이 세상에 빛을 볼 수 있도록 해 주었습니다.

어떠한 상황이든 시대를 잘 타고 나야 지속적인 성장을 할 수 있습니다.
공교롭게도 PNG는 GIF가 논란속에 휩싸인 1996년 태어났고, 유니시스사가
 무료 사용자들에 대한 무상 특허 정책을 거둬들인 1999년 이후 비로소 인기를 끌기 시작했습니다.


그래, 너는 어떤 재주가 있는고?
1996년 7월 1일 빛을 본 PNG는 Portable Network Graphics의 약자입니다. 발표된 그 해 10월 1일 W3C에서 표준으로 지정되었습니다. 이 때의 버전은 1.0입니다.*

기본적으로 PNG는 비손실 그래픽 파일 포멧입니다. JPEG와는 다르게 이미지를 손실하지 않고 압축합니다.
분명 흥미롭지만, 이정도 가지고는 GIF를 이용하던 사람들의 발을 돌릴 수는 없겠죠. 그래서 다음과 같은 다양한 기능들을 제공합니다.

우선 GIF가 가지고 있던 한계를 모조리 깨부쉈습니다. GIF는 Transparent(투명층)를 지원하기는 하지만 단색(1색)만 지원합니다. 또한 그 색상도 256색 밖에 표현하지 못합니다.
PNG는 이러한 단점을 극복하고자, 총 8비트의 Transparent를 지원하고, 지원 색상 또한 24비트로 늘렸습니다. 24비트는 1670만 이상의 색상을 나태납니다. 256색에서 1670만색, 어마어마한 차이입니다.

그런데 기존에 GIF와 PNG를 모두 사용하셨던 분들이라면, 하나 쯤 의문이 들 지도 모르겠습니다.
'동일한 파일을 GIF와 PNG로 동시에 저장하면, 분명 GIF가 용량이 더 작았다' 라구요.

분명 용량만 비교하면 '그럴 수도 있겠다'가 정답입니다.
GIF와 PNG 모두 무손실 압축 방법을 사용하고 있습니다. 그런데 중요한 사실은, GIF는 256색만 지원한다는 것입니다.

아래 예제 파일을 보실까요?

모두 동일한 사진 파일을 GIF와 PNG로 저장하였습니다.

 
좌측이 GIF, 우측이 PNG (클릭하시면 원본 사진을 보실 수 있습니다)

재미있는 결과가 나왔습니다. 좌측의 GIF는 339KB, 우측의 PNG는 983KB입니다.
단순히 표면상 보면 PNG가 GIF보다 압축률이 떨어지는 것으로 보여집니다. 그런데, 다음 사진을 보면 왜 이러한 결과물이 나왔는지 확인하실 수 있으실 겁니다.

 
좌측이 GIF, 우측이 PNG

256색까지만 표현이 가능한 GIF는 그 한계를 벗어나는 색상을 비슷한 색상으로 대체하여 저장하기 때문에 원본 이미지를 그대로 저장하지 못합니다. 때문에 범위를 벗어난 색상 값들은 없어지고, 이로 인해서 자연스럽게 압축이 더 많이 된 것 처럼 보이는 것입니다.

이 외에도 PNG는 재미있는 기능을 많이 가지고 있습니다.

서론에 설명한 8비트 알파 Transparent가 바로 그것입니다. 예제를 보면 바로 아실 수 있으실 겁니다.

      

오른쪽 이미지는 배경이 살짝 비치는 것을 확인하실 수 있습니다.

만약 사용하시는 브라우저가 Internet Explorer 7.0 미만이시라면 오른쪽 이미지는 제대로 표시되지 않을 수 있습니다.


JPEG의 자리를 넘보다
PNG의 다양한 기능은 단순히 GIF와의 비교에만 구속되지 않습니다. 대중적으로 사용되는 JPEG의 자리까지도 넘보는 경지에 올라서게 되었기 때문입니다.

JPEG(Joint Photographic Experts Group)는 정지 화상, 즉 사진의 촬영을 위하여 만들어진 손실 압축 포멧의 표준입니다. 흔히 jpg 확장자가 가장 많이 사용되지만, jpeg, jpe 등의 확장자도 종종 사용됩니다.
자세한 설명은 다음 시간에 하겠지만, 요 JPEG는 원본 이미지를 훼손하여 저장하기 때문에 파일을 지속적으로 저장할 경우 무한대(?)의 파일 훼손을 경험하실 수 있을 것입니다.

PNG는 이러한 상황의 대안으로 사용될 수 있습니다.
우선 원본을 손실 없이 저장하고, 이후에 편집할 예정이라면 촬영된 화상을 PNG로 저장하는 것이 현명할 것입니다.

파일을 손실 압축하는 JPEG로 텍스트가 포함된 이미지를 저장하면 (압축 때문에) 이미지 주변이 지저분하게 변하는 것을 확인할 수 있습니다. 그러나 PNG로 저장할 경우 원본을 그대로 압축하므로 이러한 변조 현상 없이 깨끗한 이미지를 얻으실 수 있습니다.


좌측이 JPG, 우측이 PNG로 저장된 이미지
그러나 손실 압축을 사용하는 JPEG가 분명 용량 면에서 훨씬 우위에 서 있는 것이 사실입니다. 이미지에 훼손을 가하면서 까지 압축을 하기 때문입니다.


얘도 만능은 아니겠죠?
GIF가 대중적으로 사용되고는 있지만 단점은 존재하는 것 처럼, PNG도 단점은 존재합니다.
간략하게 정리하면 다음과 같습니다.

     1. 일부 기능을 모든 브라우저에서 사용할 수 없다.
     2. Animation을 사용할 수 없다.

우선 PNG는 대부분의 브라우저를 지원(IE 4.0b1 이상)하기는 하지만, 8비트 알파 채널의 경우 IE 7.0 미만에서는 지원하지 않습니다.

특정 스크립트를 사용하면 가능하지만, 웹을 제작하는 사람 입장에서 모든 브라우저를 고려해야 한다는 것 만큼 피곤한 일이 없습니다.

두번째는, 큰 단점이라고 할 수 있겠는데, 바로 움직이는 이미지를 만들 수 없다는 것입니다.

플래시가 대중화 되기 전, 그리고 지금까지도 Animation GIF는 널리 사용되고 있습니다. GIF의 단점을 극복하고자 만들어진 PNG가 이러한 기능을 지원하지 않는다는 것은 참으로 아이러니 하지 않을 수 없습니다. 대안으로 APNG, JNG, MNG 등이 존재하기는 하지만, 아직 대중적으로 사용되지 않고 있습니다.


마치면서...
GIF에 사용되는 LZW 알고리즘은 특성 회사(IBM도 여기에 대한 특허가 있다고 합니다)의 소유물입니다. 2009년 현재 대부분의 특허는 만료되었지만, 아직까지도 사용하기 찝찝한(?)면이 있는건 사실입니다.
(GNU 사이트에는 GIF를 사용하지 않는다고 하는데, 여기에 대한 읽을거리는
이곳을 참조하시기 바랍니다)

움직이는 GIF를 사용하지 않을 것이라면, 그리고 해당 이미지를 손실 없이 저장하고 싶다면 GIF 보다는 PNG를 사용해 보는게 어떨가 생각해봅니다.

다음 시간에는 웹 표준 색상에 대해 간단하게 알아보겠습니다. ^^

* 현재 PNG는 국제 표준(ISO/IEC 15948:2003)과 W3C 표준으로 2003년 11월 10일 발표됨

다이렉트 블로그
Posted by 알 수 없는 사용자
,