|
ここにある情報はかなり古くなっており、正しくなくなっている可能性があります。掲載しているサンプルコードiなどは、最新のPHPでは動作しない、もしくは、別途設定・調整が必要になるかも知れません。情報を鵜呑みにせず、あなたの手を動かして、あなたの目で確認してください。
zip形式
tgz形式
PHP3の頃にもあったネタですが、PHP4.xでも基本的には同じです。
PHPは、GDライブラリを使った画像ファイル(バージョンによって、gifあるいはpngのいずれかをサポート)の作成もサポートしています。
[2002/02/24] PHPマニュアルにもあるとおり、gd-1.6より前のバージョンのgdはgifイメージ画像をサポート、gd-1.6以降のバージョンはpngをサポートしています。gdをサポートさせるときは、インストールされているバージョン、libgd.soのインストール先を確認しましょう。
UNIXの場合、PHPのconfigure時に--with-gdオプションを付けて再make、make installします。Windows版では、php.iniのextension=php_gd2.dllをアンコメントします。再install後、phpinfoを実行し、サポート状況を確認しておきます。
今回試したときの各ライブラリは、Vine Linuxでインストールされるrpmを使っています(gd-1.8.3/libpng-1.0.7/libjpeg-6b)。また、TrueTypeフォントをサポートさせるため、FreeTypeライブラリ(freetype-2.0.8)を別途ソースからmake・installしています。そして、configure時に「--with-gd --with-ttf --with-freetype-dir=/usr/local --with-jpeg-dir --with-png-dir --with-xpm-dir」を付けています。
以下のサンプルは、Oracle の表領域の空き具合を棒グラフにしたpngファイルを動的に作成します。なお、画像を作成するbar.phpでは、Content-Typeを指定する必要があります。
実際に作成された画像は、 こんな感じです。
●gd.phpの抜粋
<?php
:
?>
:
<td><img src="bar.php?pct=<?php echo $pct; ?>"></td>
:
<?php
:
?>
●gd.php
<?php
$img = ImageCreate(100, 16) or die ("Cannot Initialize new GD image stream");
$col = ImageColorAllocate($img, 160, 0, 0);
ImageFill($img, 0, 0, $col);
$col = ImageColorAllocate($img, 0, 160, 0);
ImageFilledRectangle($img, 0, 0, $pct, 15, $col);
Header("Content-type: image/png");
Header("Cache-control: no-cache");
ImagePng($img);
ImageDestroy($img);
?>
イメージファイル中に文字列を出力するにはImageString関数がありますが、組み込みフォントが使われます。TrueTypeフォントを使う場合はImageTTFText関数を使いますが、マルチバイト文字を表示させる場合、文字列をmb_convert_encoding関数でUTF-8に変換してやる必要があります。また、別解としては、PHPのconfigure後に作成されるMakefileを以下のように編集する、というものがあります。
●Makefile修正前GDLIB_CFLAGS = -I/usr/.../gd/libgd -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE
●Makefile修正後GDLIB_CFLAGS = -I/usr/.../gd/libgd -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE -DJISX0208
|