GDライブラリ


232,515

Yesterday: 23 Today: 4

connected: via IPv4

Unix Tips


GDライブラリ

GDライブラリのバージョン1.8.4ではGIFがサポートされなくなっています。
このままでは、PHP等からGIF画像を動的に作成することができないので困っている人が多いかと思われます。

そこで、GDライブラリにGIFを追加する方法だけを紹介したいと思います。
GIFに関して、LZWアルゴリズムの特許をUnisys社が保持しています。
この方法によってライブラリを作成してUnisys社と訴訟問題になったとしてもKK.Konは責任を絶対に取りません。自己の責任において運営してください。

しかしながらKK.Konとしてはhttp://www.webofsim.com/のGDに対するGIFパッチはLZWを使用していないと書いているようなのでGIFフォーマットまでUnisys社が特許を持ち出さない限りOKではないかと思います。

あと、autoconfとlibtoolをつかってGDライブラリ1.8.4を作成するconfigure.inを作成しました。現在はFreeBSDでしかテストしていないので他のOSでチェックしてから公開するかもしれません。


GDライブラリにGIFを組み込む

  1. まずGDライブラリ本体を取ってきてください。
    http://www.boutell.com/gd/
    が配布元となっています。
  2. GDライブラリに対するGIFパッチを取ってきます。
    http://www.webofsim.com/
    1.8.3用ですが Makefile 以外ならパッチを当てれます。
    http://www.rhyme.com.au/gd/
    においてはすでにGIFパッチがあたったGDライブラリが配布されています。(どうもこのパッチはLZWを使っているかもしれません)
  3. GDライブラリ本体を展開してください。そして次にパッチを当ててください。
  4. Makefileを修正してコンパイルをかけてください。
  5. そのままでは共有ライブラリが作成できないと思いますので
    "GDのMakefile解説”を読んでください。

GD共有ライブラリをあらゆるプラットフォームで作成する

http://downloads.rhyme.com.au/gd/patch_gd1.8.4_amgif_20010208.gz

を取ってきてやれば、GNUのAutomake, Autoconf, libtoolを使用してプラットフォーム依存から抜け出せます。
libtoolによってスタティクライブラリと共有ライブラリの両方をコンパイルしてくれるので簡単だと思います。

注意:
"Depending on where you live, this may infringe patents. "
"あなたがどこに住んでいようともこれは特許侵害です。"となっています。


GDのMakefile解説

変数名

COMPILER:

コンパイルに使用するプログラムの名前をセットしてください。
gccがインストールされていなければ cc などに変更してください。

AR:

スタティックライブラリを作成するためのコマンドを設定してください。
ほとんどいじる必要がありません。

CFLAGS:

どの外部ライブラリがすでにインストールされているか指定

-DHAVE_LIBPNG libpngがインストールされているなら追加
-DHAVE_LIBJPEG libjpegがインストールされているなら追加
-DHAVE_LIBXPM libXpmがインストールされているなら追加
-DHAVE_LIBTTF FreeType1(libttf)がインストールされているなら追加
-DHAVE_LIBFREETYPE FreeType2(libfreetype)がインストールされているなら追加

LIBS:

どの外部ライブラリをGDライブラリにリンクするか指定

-lpng libpngがインストールされているなら追加
-ljpeg libjpegがインストールされているなら追加
-lX11 -lXpm libXpmがインストールされているなら追加
(環境によって指定が違うかもしれません。)
-lttf FreeType1(libttf)がインストールされているなら追加
-lfreetype FreeType2(libfreetype)がインストールされているなら追加

INCLUDEDIRS:

外部ライブラリヘッダのディレクトリの指定

コンパイル時にヘッダファイルが見つからない等エラーが出た場合は追加してください。

LIBDIRS:

外部ライブラリがインストールさているディレクトリの指定

リンク時にライブラリが見つからない等エラーが出た場合は追加してください。

共有ライブラリの作成

デフォルトの Makefile ではスタティクライブラリしか作成しないので、PHPなどからは共有ライブラリ形式を期待しているものが多くそのままではGDライブラリがないものとされるので共有ライブラリを作成する必要があります。

Makefile の後ろの部分を以下の形式に置き換えてやれば共有ライブラリを作成するようになります。
ただしコンパイラは gcc での使用を想定しています。

Makefile



last update at 2010/11/09 19:17:06