20.GD1.2


  지금까지 배운 내용으로 웬만한 일들은 다 처리할 수 있을 것이다.

  그러나, 문제는 ChartImage Counter와 같은 것을 만들기에는 뭔가 부족하다. 그래도 Chart같은 것은 Java Applet과 같은 것을 이용해서 만들 수도 있으나 Counter는 그렇게 해도 구현할 수 가 없다.

  카운터의 경우 대개 다음의 두가지 방식중에 하나를 사용하게 된다.

  • 이미지를 미리 준비하여 출력하는 경우

      이 경우는 0.jpg ~ 9.jpg까지 일단 각 숫자별로 이미지를 준비한 뒤에 img Tag를 이용하여 출력하는 것이다. 이렇게 되면 각 그림별로 조각나서 보이게 되며, Server상에 각각의 이미지를 반드시 제공해야 하는 단점이 있는 반면에 구현하기는 쉽다.

      그러나 이미지 카운터를 포함하게 될 페이지가 반드시 CGI처럼 실행이 가능한 프로그램안에 코딩을 직접하거나, Server Side Include방식으로 포함시켜서만 사용할 수 있기 때문에 일반적인 방법하고는 거리가 있다.

  • 이미지를 다이나믹하게 구성하여 출력하는 경우

      하나의 이미지를 필요할 때마다 새로 구성하는 방식이다. 즉, CGI프로그램이 필요할 때마다, 직접 이미지를 그려서 이를 브라우저로 내려보내는 경우로, 이 경우는 별도의 라이브러리가 필요하다. 즉, 원하는 숫자들로 새로운 이미지를 생성하여 이를 직접 또는 간접적으로 내려주는 것이다.
  뭐 첫 번째 방식은 현재까지 우리가 알고 있는 수준에서 충분히 해결될 수 있다.

  다음 코드는 counter에 필요한 숫자가 들어있다고 가정하면, 다음과 같이 구현한다. (여기서 자세한 코드는 생략하고 메인 코드만 보자. 실제로 이런 방식으로 구현하지는 않기 때문이다. )

int i= 0, counter, mod;
int img[10];

while(counter > 0){
    mod = counter % 10;
    img[i++] = mod;
    counter = counter / 10;
}
i--;

while(i >= 0)
    printf("<IMG SRC=/images/%d.jpg>", img[i--]);


  따라서, 이번 장에서 논의코자하는 부분은 두 번째 부분으로 이미지를 다이나믹하게 생성하여 브라우저로 전송하는 기능에 대하여 알아보도록 하겠다.( 대부분의 무료 카운터를 제공하는 것들은 이런 방식을 구현하고 있다. 확인해 보고 싶으면 이미지가 하나인지 여러 조각인지 보면 된다. )

  이제, 다이나믹하게 이미지를 생성해주는 프로그램을 작성하면 된다. 즉, GIF파일의 포맷을 알면 그렇게 작성하면 되는 것인데, 문제는 우리가 GIF포맷을 다 알면 좋은데 대부분 그렇지 못하다는 것이다.   그럼 어떻게 처리하는가? 그러한 것을 제공해주는 공개 라이브러리가 있다. GD 라는 Graphics Library가 그것이다.

  gd로 이미지를 자유자제로 다이나믹하게 만들어 낼 수 있다.

  현재(2001년7월) gd2.0.1 Beta 까지 나와 있으나 GIF파일 포맷을 지원하는 버전으로는 1.2가 마지막 버전이다. 1.2 이후버전들은 GIF에 관련된 저작권 때문에 PNG라는 파일 포맷을 지원하는 것으로 바뀌었다.

    PNG   PNG파일 포맷은 이미지 파일 포맷의 새로운 종류로, 네비게이터나 익스플로러의 4.0 이상 버전에서 모두 지원하고 있다. 이 파일 포맷이 좀더 빠르고, jpeg보다도 압축률이 좋다고 한다.
  그래도 우리는 GIF에 익숙하므로 일단 GIF를 지원하는 1.2버전을 가지고 설명할 것이다.

  참, 이 GD 라이브러리의 공식 홈페이지는 http://www.boutell.com/gd/ 이다. PNG파일 포맷을 사용하려거나 최신 버전을 얻고 싶은 사람, 또는 보다 많은 정보를 얻고 싶은 사람은 이 홈페이지에 가보면 된다.

- Last Update : 2001.7.9 by Deadfire(http://www.deadfire.net)

CGI with C 활용
브라우저구분
환경변수LIST
클라이언트풀
서버푸쉬
Form Mail
진행현황보기
Cookie
MD5
File Download
SSI
Redirection
File Upload
GD1.2
Database
마치며

Copyright ⓒ 1997 ~, Deadfire Program Master