gdについて

Note: 以下、プロンプトを$で表すので、以下の説明で、$は打ち込まなくてよい。
Note: #は管理者(ルート)のプロンプトを表す。これも打ち込まなくてよい。

gdはjpegとかpngの画像をいろいろいじるためのライブラリで、netpbmよりもドキュメントがよく整備されているとかで、C言語などで画像をいじるプログラムを自作するのに便利である。RedHatなどのLinuxのディストリビューションにはデフォルトで入ってくるようだ(試しに $ rpm -q gd などと打ってみてください)。

とりあえずここのサンプルプログラムをgdtest.cのような名前で保存して、

$ gcc gdtest.c -lgd

とやってみる。うまくコンパイルができて, $./a.outとすると、test.pngとtest.jpgという2つの画像ファイルができているはず。それぞれ、黒地に白線が左上から右下に引かれた単純な絵で、$ ee test.pngなどで確認。

jpeg画像をいくつかの矩形領域に分割するプログラム: divjpg_.c ソース

jpeg画像を任意の角度で回転するプログラム: rotjpg_.c ソース

注意! バージョン1.8.4-9と2.0以上の相違点

下位バージョンでうまく出力されていたJPEG画像が、バージョン2以上では単色の妙な画像になってしまうことがある。これはgdImageCreate関数が、true color画像をうまく扱えていないため。バージョン2以上ではgdImageCreate関数のかわりに、gdImageCreateTrueColor関数を使えばOK。

バージョンアップの方法

RedHat9でもまだバージョン1.8.4しか入っていない。ここは、ソースをコンパイルして対応する。

まず/etc/ld.so.confに/usr/local/libを追加。その後、

# rpm -e --nodeps gd
# rm /usr/lib/libgd.a
# rm /usr/lib/libgd.so
$ mkdir ~/tmp; cd ~/tmp
$ wget http://www.boutell.com/gd/http/gd-2.0.15.tar.gz
$ tar zxvf gd-2.0.15.tar.gz
$ cd gd-2.0.15
$ ./configure
$ make
# make install
# /sbin/ldconfig