ポンクソフト

フォームとの連動 - PHPでGDを使ってみよう

前ページ PHPでGDを使ってみよう TOP 次ページ

目次

  1. PHPでGDを使ってみよう
  2. GDの基本
  3. フォームとの連動
  4. アンケートで円グラフ

フォームで画像のパラメータを指定する

動的に画像を変化させる例として、フォームで入力された値を画像に反映させるプログラムを作成します。

フォーム部分のプログラム

まずフォーム部分のプログラムを作成します。以下のソースを入力してください。
<?php
$me = $_POST['me'];
if (!$me) $me = 50;
$kuchi = $_POST['kuchi'];
if (!$kuchi) $kuchi = 30;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ケロケロ</title>
</head>
<body>
<form method="post" action="gd3.php">
目の大きさ<select name="me">
<?php
for ($i = 10; $i <= 90; $i += 10) {
  print "<option";
  if ($i == $me) print " selected";
  print ">$i</option>\n";
}
?>
</select>
 口の大きさ<select name="kuchi">
<?php
for ($i = 10; $i <= 80; $i += 10) {
  print "<option";
  if ($i == $kuchi) print " selected";
  print ">$i</option>\n";
}
?>
</select>
 <input type="submit" value="送信">
</form>
<?php print "<img src='gd3b.php?me=$me&kuchi=$kuchi'>\n"; ?>
</body>
</html>
入力が終わったら「gd3.php」というファイル名で保存し、サーバにアップします。

画像部分のプログラム

次に画像部分のプログラムを作成します。以下のソースを入力してください。
<?php
$me = $_GET['me'];
$kuchi = $_GET['kuchi'];
header("Content-Type: image/png");
$img = imagecreate(200, 200);
imagecolorallocate($img, 100, 0, 0);
$col = imagecolorallocate($img, 50, 200, 50);
imagefilledarc($img, 100, 100, 180, 180, $kuchi, 360 - $kuchi, $col, IMG_ARC_PIE);
$col = imagecolorallocate($img, 255, 255, 0);
imagefilledellipse($img, 50, 50, $me, $me, $col);
imagepng($img);
?>
入力が終わったら「gd3b.php」というファイル名で保存し、サーバにアップします。その後、gd3.php を実行してみてください。目と口の大きさをフォームで変更することができます。

gd3.php ソースの解説

まずフォーム部分のソースを解説します。
$me = $_POST['me'];
if (!$me) $me = 50;
フォームからPOST変数で送られた目の大きさを変数 $me に代入しています。最初に実行されたときは初期値として 50 を代入します。
$kuchi = $_POST['kuchi'];
if (!$kuchi) $kuchi = 30;
フォームからPOST変数で送られた口の大きさを変数 $kuchi に代入しています。最初に実行されたときは初期値として 30 を代入します。
目の大きさ<select name="me">
目の大きさを指定するプルダウンメニューを作成します。
for ($i = 10; $i <= 90; $i += 10) {
  print "<option";
  if ($i == $me) print " selected";
  print ">$i</option>\n";
}
目の大きさを指定するプルダウンメニューの中身を作成します。目の大きさは 10 から 90 まで 10 刻みで指定できるように for 文を記述し、option タグを表示しています。現在の目の値が来たときは selected を出力して選択されるようにします。
口の大きさ<select name="kuchi">
口の大きさを指定するプルダウンメニューを作成します。
for ($i = 10; $i <= 80; $i += 10) {
  print "<option";
  if ($i == $kuchi) print " selected";
  print ">$i</option>\n";
}
口の大きさを指定するプルダウンメニューの中身を作成します。口の大きさは 10 から 80 まで 10 刻みで指定できるように for 文を記述し、option タグを表示しています。現在の口の値が来たときは selected を出力して選択されるようにします。
<?php print "<img src='gd3b.php?me=$me&kuchi=$kuchi'>\n"; ?>
img タグの src 属性に画像を出力するスクリプトを渡すことによって画像を出力しています。GET変数として、目と口の大きさを渡しています。

gd3b.php ソースの解説

次に画像表示部分のソースを解説します。
$me = $_GET['me'];
$kuchi = $_GET['kuchi'];
gd3.php から GET 変数で渡された目と口の大きさをそれぞれ $me と $kuchi に代入します。
imagefilledarc($img, 100, 100, 180, 180, $kuchi, 360 - $kuchi, $col, IMG_ARC_PIE);
円弧を使い、角度を上下にそれぞれ $kuchi 度だけ開けて口を表現しています。
imagefilledellipse($img, 50, 50, $me, $me, $col);
目を大きさ $me の円で表現しています。
前ページ PHPでGDを使ってみよう TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


シャネル サングラス
リーマン・ショックが過ぎ、米国株はどんどんと上昇してしまい、買い時を逃した人も多いはず。
100年に一度と言われたリーマン・ショックですから当然ビビって底値なんかでは買えないわけです。
指をくわえて押し目待ちに押し目なしの状態だった人も多いことでしょう。
しかし、ようやく2016年にチャンスがやって来ました。
2017/07/16 05:31

カルティエ 時計
私の言いたいことは、私がどれほどまでに私はこの腕時計が好きだったことに驚きました。
つまり、はい、それは比較的きれいなダイヤルを好きなことがたくさんありました、そして多くのビンテージの手がかりは、ドームを含む(と)サファイアクリスタルは、過去の高層のアクリル系結晶の感覚を与えます。
しかしそれはクロノグラフ、ですが、私は、率直にその合併症、ユーティリティの多くのために私の人生でありません。
など、デザインは私に似合いませんでした。
ブライトリングのトランスオーシャンクロノグラフが1915年の私のスタンスを再考させるでない間、それは私と一緒に時間を過ごす幸せだったものである。
2017/07/16 03:55


あかさたなは
2017/07/12 18:39


222fffた
2017/07/11 14:49


222あ
2017/07/11 01:56



2017/07/09 13:30

阿部心臓
雷がやばい
2017/07/08 18:18

いいいい
おおおおおおおおおお
2017/07/07 15:07

東洋の魔女
はふはふ
2017/07/07 07:57


日本語が文字化けしてしまいます
2017/07/05 11:49

残りを読む »