このようにすれば、ユーザープログラムは、"gd/gd.h"をインクルード した上で、% tar zxvf gd1.3.tar.gz % mv gd1.3 gd % cd gd % make
% cc -o program.cgi program.c -Lgd -lgd -lmという感じでコンパイルします。
#include <stdio.h> #include <string.h> #include <time.h> #include "gd/gd.h" #include "gd/gdfontmb.h" int main(){ gdImagePtr im; FILE *out,*in; int black,yellow,blue; time_t t; char *s1; im=gdImageCreate(256,40); black=gdImageColorAllocate(im,0,0,0); yellow=gdImageColorAllocate(im,240,230,0); blue=gdImageColorAllocate(im,0,0,255); gdImageArc(im,128,20,220,38,0,360,yellow); gdImageFill(im,128,20,yellow); t=time(0); s1=ctime(&t); s1[24]=0; gdImageString(im,gdFontMediumBold,50,13,s1,blue); gdImageColorTransparent(im,black); printf("Content-type: image/gif\n\n"); gdImageGif(im,stdout); fflush(stdout); gdImageDestroy(im); } |
gdで画像を生成するためには、gdImageCreate()でまず、空の画像を
作成します。gdColorAllocate()は、色を定義して、カラーテーブルに
アローケートします。 この例では、gdImageArc()で弧(例では0〜360°まで指定して 楕円にしてある)を描いて、gdImageFill()で中を塗りつぶします。 そして、時間を表す文字列を書き込んでいますが、ctime()で生成される 文字列には最後に"\n\0"が付いてくるので、改行コードを消しています。 gdImageColorTransparent()は、透過gifを作成するために、 透過色のインデックスを指定します。 gdImageGif()でイメージを出力しますが、それに先立って、 ブラウザが画像を認識出来るようにMIMEヘッダを出力します。 最後にfflush()で出力をフラッシュして、gdImageDestroy()で 画像に割り当てられたメモリを返却します。 このCGIプログラムは、 % cc -o gdtest.cgi gdtest.c -Lgd -lgd -lmとコンパイルして、HTMLから、 <IMG SRC="gdtest.cgi">として、呼び出します。 |