Click here to visit our sponsor

祝!【ホームページ基本容量拡大と増設料金値下げ】 記念企画!

gd 1.8.3 とあそぼう!


 2000/11/01 より、BIGLOBE の個人ホームページの容量が増えるらしい。 BIGLOBE からのおしらせ

 記念企画!として、gd の最新版をインストールすることにしましたぁ。
現時点(00/10/29) では、友人B君の協力により、www2d サーバーにインストールされて動作が確認されております。

 今回の記念企画は、gd 1.8.3 ってなんだ?という解説はしない予定でありまして、 もう、gd1.8.3 といえば、何であるかをご存知の人向けであります。 (なんか色々機能が増えているようなんですが、まあ、そのうち検討する事にしましょう)

材料

例によって、とにかく動けばいいでしょ的アプローチでの試行の結果、必要なものは次の3つでした。ご用意ください。
gd1.8.3
libz
libpng

入手先は、以下の URL あたり。(ぜんぶ英語)
gd 1.8.3
gd-1.8.3.tar.gz (274318 Byte)

zlib Home Site
zlib.tar.gz (source code) (168463 byte)

PNG Home Site
libpng Home Page
libpng-1.0.8.tar.gz (484520 Byte)

容量が結構、必要なんですよぉ

思い起こせば、いつ頃までだったしょうか? BIGLOBE では CGI が作ったファイルは、owner が自分ではなくて、 いくらでも容量がつかえた時代もあったのであります(^^;;;

00/10/30


容量の変更

以下のコマンドで設定を確認(telnet.cgi 経由)
/usr/ucb/quota -v

変更前
Filesystem     usage  quota limit       timeleft    files   quota   limit   timeleft
/home4          4343   5000  5000                     832    1000    1000           
変更
容量変更

変更後
Filesystem     usage  quota limit       timeleft    files   quota   limit   timeleft
/home4          4343  10000 10000                     832    2000    2000            
うれしい。
あ! 変更を通知するメールも到着しました。

00/11/02


libz のインストール

usr というディレクトリを作成
zlib_tar.z をアップロード (FTP)
zlib.tar.z へ rename (FTP)
>gunzip zlib.tar.gz (telnet.cgi)
zlib.tar になる。
>tar -xf zlib.tar
zlib-1.1.3 というディレクトリが作成される。
>cd zlib-1.1.3
>make test
cc -O  -target sun4 -c  example.c
cc -O  -target sun4 -c  adler32.c
cc -O  -target sun4 -c  compress.c
cc -O  -target sun4 -c  crc32.c
cc -O  -target sun4 -c  gzio.c
cc -O  -target sun4 -c  uncompr.c
cc -O  -target sun4 -c  deflate.c
cc -O  -target sun4 -c  trees.c
cc -O  -target sun4 -c  zutil.c
cc -O  -target sun4 -c  inflate.c
cc -O  -target sun4 -c  infblock.c
cc -O  -target sun4 -c  inftrees.c
cc -O  -target sun4 -c  infcodes.c
cc -O  -target sun4 -c  infutil.c
cc -O  -target sun4 -c  inffast.c
ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o  zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o 
cc -O -o example example.o -L. -lz
cc -O  -target sun4 -c  minigzip.c
cc -O -o minigzip minigzip.o -L. -lz
hello world
uncompress(): hello, hello!
gzread(): hello, hello!
gzgets() after gzseek: hello!
inflate(): hello, hello!
large_inflate(): OK
after inflateSync(): hello, hello!
inflate with dictionary: hello, hello!
                *** zlib test OK ***
これで出来たはずであります。

libpng のインストール

うーん、これ、大きいのと、ややこしいので試行錯誤が多くてまとめきれない(^^;;;
とりあえずのメモ
使う makefile は
scripts/makefile.sunos
>make all

gd のインストール

うーん、これも、まとめきれない(^^;;;
とりあえずのメモ
>make gddemo
wbmp.c は、ソースの変更が必要でした。
makefile の LIBS の変更が必要
LIBS=-lgd -lpng -lz -lm

なにはともあれ...サンプルを動かしてみる。


動かしてみる 黒い四角の左上から右下へ白い線を引いているだけです。とりあえずですから (^^;;;

sample-1.c


ということで、再度、やりなおすぞぉ
うーん、3連休でやろうと思ったけど、出来ないかもしれないなぁ(^^;;;
うーん、1.8.3 のあてにならない抄訳も着手してみましたが...ああ、まだまだかかりそうです。
どうも、1.3 の抄訳の誤りも目についてしまうし(^^;;;

00/11/05


 インストールの解説も、やりかけですが、 あてにならない抄訳も、ぼちぼちと、やっております。 リファレンスは、いまだに、ほとんど訳が進んでいないのですが、 それ以外の部分については、アテにならない訳が進んだので、 恥ずかしいけど、公開してしまいましょう(^^;;;
 例によって、あてにならないことは、覚悟してください。 ということで、あてにならない抄訳(1.8.3)

 2つくらいは、持っていたはずの英和辞典の CD-ROM が見つからず (どうして、見つからないかを鑑みるに、 某必需品ソフトのオマケとか、 パソコンのオマケについてきた CD-ROM なので扱いが雑なんだろうなぁ...)、 仕方なく、近所のお店で一番安いのを探して買ってきました。 IBM 翻訳の王様(研究社、英和中辞典、和英中辞典付)だ。 一気に辞書を引いてくれていると思うだけなら、 翻訳機能もなかなかいいぞぉ。 単語力ないから<自分
 我が貧弱な英語力ではわかりにくい部分は、 IBM 翻訳の王様といえども、わけがわからん日本語になるので、なにか納得しているのであった。

00/11/09


jpeg をインストール

png だと、やっぱり、まだやや不便。 ブラウザによっては plug-in が必要なようですし。 jpeg 機能もインストールする事にしました。
ftp://ftp.uu.net/graphics/jpeg/
jpegsrc.v6b.tar.gz (613261 byte)
これがまた、なかなか大きい。disk 容量がきついなぁ。

install.doc で install 方法を確認。
./configure
make
make test

jconfig.h は以下の変更が必要でした。
#include <stddef.h> の位置を変更。
できたようである。

再度、gd のインストール
必要な、ファイル
libpng.a, png.h, pngconf.h
libz.a, zlib.h, zconf.h
libjpeg.a, jpeglib.h, jconfig.h, jmorecfg.h, jerror.h

makefile の CFLAGS, LIBS を変更した。
CFLAGS=-O -DHAVE_JPEG
LIBS=-lgd -lpng -lz -lm

wbmp.c は、ソースの変更が必要でした。(前述と同様)

>make gddemo

できました。

動かしてみる 黒い四角の左上から右下へ白い線を引いているだけです。とりあえずですから (^^;;;

sample-1j.c


あてにならない抄訳(1.8.3) も、ちょっとだけ進みました。
00/11/11


ということで、jpeg のカウンターが動きました。(日付 時刻表示付)

内容の解説は、ただいま作業中。

00/11/12


バグもありましたが、修正しました。
上のカウンターのソースです。

jpgctr.cgi Perl
str2jpg.c C

あてにならない抄訳(1.8.3) は、けっこう進みました。
このペースだと、今回は完訳がめざせそうな気もしてきました。気力が続くか?

00/11/15


あてにならない抄訳(1.8.3) が、ささやかに進歩しました。

00/11/25


あてにならない抄訳(1.8.3) が、ささやかに進歩しました。

00/12/03


あてにならない抄訳(1.8.3) が、ささやかに進歩しました。

参考になりそうなリンク(ぜんぶ日本語)

PNG普及プロジェクト JAPAN
CGIでも使えるPNG(ぴんぐ)式画像カウンタ
gdで楽々PNG作成
GDモジュール v.1.30 [河馬屋二千年堂 Perlの小技]
Version 1.7.x の GD ライブラリで日本語を使う上での注意事項 [山賀さん@千葉大総情セ]
Ruby/GD


00/12/10


fly を改変して jpeg 版を作ってみた。
すんなり動いてしまった。

必要なファイル
fly.h
flyjpg.c (fly 改変版)
gd.h
gd_io.h
gdfontg.h
gdfontl.h
gdfontmb.h
gdfonts.h
gdfontt.h
libgd.a
libjpeg.a
libz.a

コンパイル例
gcc -o flyjpg flyjpg.c -L. -lgd -ljpeg -lz -lm

改造の要点
fly 1.6.5 の fly.c を改変し flyjpg.c を試作した。
gdImageCreateFromGif を gdImageCreateFromJpeg へ変更
gdImageGif を gdImageJpeg へ変更。引数が一つ増える点に注意! 3つめに -1 を追加
'.gif' を '.jpg' へ置換

おまけの変更点 (名前とかコメントなどなので変えなくても大丈夫だとおもうけど...)
copy_to_gif を copy_to_jpg へ変更
その他 gif の文字列を jpeg jpg などに適当に変更
fly については...
本家(英語) : http://www.unimelb.edu.au/fly/
ミラーサイト(日本語) : http://p4room.mda.or.jp/fly/ja/
01/01/26


GD.pm のインストールに着手
GD.pm 1.30
gunzip GD.pm.tar.gz
tar -xf GD.pm.tar
GD-1.30 が出来る
cd GD-1.30
Makefile.PL を調整
perl5 Makefile.PL
>perl5 Makefile.PL
NOTICE: This module requires libgd 1.8.3 or higher (shared library version 4.X).

Please choose the features that match how libgd was built:
Build JPEG support? [y] y
Build FreeType support? [y] y
Build XPM support? [y] y

If you experience compile problems, please check the @INC, @LIBPATH and @LIBS
arrays defined in Makefile.PL and manually adjust, if necessary.

Warning: -L../ changed to -L/home4/gama/public_html/cgi/gd/gdpm/GD-1.30/../
Checking if your kit is complete...
Looks good
Writing Makefile for GD

make
>make
mkdir blib
mkdir blib/lib
mkdir blib/arch
mkdir blib/arch/auto
mkdir blib/arch/auto/GD
mkdir blib/lib/auto
mkdir blib/lib/auto/GD
mkdir blib/man3
cp patch_gd.pl blib/lib/patch_gd.pl
cp gdtest.pl blib/lib/gdtest.pl
cp GD.pm blib/lib/GD.pm
AutoSplitting blib/lib/GD.pm (blib/lib/auto/GD)
cp qd.pl blib/lib/qd.pl
/usr/local/bin/perl5 -I/usr/local/lib/perl5/5.00503/sun4-sunos -I/usr/local/lib/perl5/5.00503 /usr/local/lib/perl5/5.00503/ExtUtils/xsubpp -object_capi  -typemap /usr/local/lib/perl5/5.00503/ExtUtils/typemap -typemap typemap GD.xs >xstmp.c && mv xstmp.c GD.c
gcc -c -I/usr/local/include -I../ -I/usr/local/include -O     -DVERSION=\"1.30\"  -DXS_VERSION=\"1.30\" -fpic -I/usr/local/lib/perl5/5.00503/sun4-sunos/CORE -DHAVE_JPEG -DHAVE_XPM GD.c
GD.xs: In function `XS_GD__Image_newFromXpm':
GD.xs:539: warning: assignment makes pointer from integer without a cast
Running Mkbootstrap for GD ()
chmod 644 GD.bs
LD_RUN_PATH="/home4/gama/public_html/cgi/gd/gdpm/GD-1.30/..:/lib" ld -o blib/arch/auto/GD/GD.so  -assert nodefinitions -L/usr/local/lib GD.o    -L/usr/local/lib -L/home4/gama/public_html/cgi/gd/gdpm/GD-1.30/.. -lgd -lpng -lz -ljpeg -lm -lX11 -lXpm 
chmod 755 blib/arch/auto/GD/GD.so
cp GD.bs blib/arch/auto/GD/GD.bs
chmod 644 blib/arch/auto/GD/GD.bs
Manifying blib/man3/GD.3

試行錯誤のすえ、動いた! 例によって、まとめきれない。
必要な成果物
GD.pm
GD.so

GD.pm を lib へ(適当につくったディレクトリ)
GD.so は lib/auto/GD へ

参考 URL
GD.pm 本家(英語)
GDモジュール v.1.30 [河馬屋二千年堂 Perlの小技]

01/01/28


gd 1.8.4 にバージョンが上がっています。
以下の様になってました。

What's new in version 1.8.4?


01/02/27


gd 2.0.0 BETA が出てました。

01/03/29


つづく

かな? 1.8.4 になったし...2.0.0 BETA も出たし。
ホームへ