このようにすれば、ユーザープログラムは、"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">として、呼び出します。 |