GDの基本 - PHPでGDを使ってみよう
目次
- PHPでGDを使ってみよう
- GDの基本
- フォームとの連動
- アンケートで円グラフ
初めてのGD
GD で画像を動的に作成し、ブラウザに出力する方法を学びます。
プログラムの作成
以下のソースを入力してください。
<?php
header("Content-Type: image/png");
$img = imagecreate(200, 200);
imagecolorallocate($img, 255, 0, 0);
imagepng($img);
?>
入力が終わったら「gd1.php」というファイル名で保存し、サーバにアップして実行してみてください。真っ赤な画像が 200 × 200 ピクセルの大きさで表示されます。
ソースの解説
header("Content-Type: image/png");
ここはGDとは直接関係ありませんが、HTTPヘッダとして、PNG 画像を出力するように設定している部分です。Content-Type ヘッダは、ブラウザ側にファイルの種類を教えるものです。普通の HTML を出力するときは、自動的に text/html(テキストファイルでHTMLを出力する)が設定されています。
$img = imagecreate(200, 200);
imagecreate は新規画像を生成する関数です。ここではサイズを 200 × 200 とし、作成された画像の画像IDを返します。
imagecolorallocate($img, 255, 0, 0);
imagecolorallocate 関数は、画像で使う色を作成します。一番最初にこの関数が呼ばれたときの色が背景色になるようです。第1引数に画像IDを指定し、第2~第4引数にそれぞれ赤・緑・青の輝度(0 ~ 255)を設定します。
imagepng($img);
引数で指定された画像IDの画像を、PNG フォーマットでブラウザに出力します。imagejpeg 関数なら JPEG フォーマットで出力できます。GIF 画像は最近の GD では使用できません。
GDのいろいろな機能を使う
文字・直線・楕円・円弧・四角などを描画してみます。
プログラムの作成
以下のソースを入力してください。
<?php
header("Content-Type: image/png");
$img = imagecreate(200, 200);
imagecolorallocate($img, 100, 0, 0);
$col = imagecolorallocate($img, 255, 255, 0);
imagestring($img, 3, 10, 10, "Hello GD!", $col);
imageline($img, 10, 25, 190, 25, $col);
$col = imagecolorallocate($img, 255, 200, 100);
imagefilledellipse($img, 100, 110, 160, 140, $col);
$col = imagecolorallocate($img, 255, 255, 255);
imagefilledrectangle($img, 60, 60, 80, 100, $col);
imagefilledrectangle($img, 120, 60, 140, 100, $col);
$col = imagecolorallocate($img, 200, 100, 100);
imagefilledarc($img, 100, 120, 120, 100, 0, 180, $col, IMG_ARC_PIE);
imagepng($img);
?>
入力が終わったら「gd2.php」というファイル名で保存し、サーバにアップして実行してみてください。顔のグラフィックスが表示されます。
ソースの解説
$col = imagecolorallocate($img, 255, 255, 0);
GD で使用する色を作成します。ここでは、文字を描画するための黄色を作成しています。
imagestring($img, 3, 10, 10, "Hello GD!", $col);
imagestring は文字を描画する関数です。第1引数で画像IDを指定して、第2引数でフォントの種類(1 ~ 5)、第3、第4引数で表示する位置、第5引数で文字列、第6引数で色を指定します。
imageline($img, 10, 25, 190, 25, $col);
imageline は直線を描画する関数です。第1引数で画像IDを指定して、第2~第3引数で始点、第4~第5引数で終点、第6引数で色を指定します。
imagefilledellipse($img, 100, 110, 160, 140, $col);
imagefilledellipse は塗り潰した楕円を描画する関数です。第1引数で画像IDを指定して、第2~第3引数で中心、第4引数で幅、第5引数で高さ、第6引数で色を指定します。
imagefilledrectangle($img, 60, 60, 80, 100, $col);
imagefilledrectangle($img, 120, 60, 140, 100, $col);
imagefilledrectangle は塗り潰した四角形を描画する関数です。第1引数で画像IDを指定して、第2~第3引数で始点、第4~第5引数で終点、第6引数で色を指定します。
imagefilledarc($img, 100, 120, 120, 100, 0, 180, $col, IMG_ARC_PIE);
imagefilledarc は塗り潰した円弧を描画する関数です。第1引数で画像IDを指定して、第2~第3引数で中心、第4引数で幅、第5引数で高さ、第6引数で開始角度、第7引数で終了角度、第8引数で色、第9引数で円弧の種類を指定します。IMG_ARC_PIE は角を丸めた円弧を描画します。