ポンクソフト

フォームとの連動 - 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

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

お名前:



すごく参考になりました!
ありがとうございます。
2017/03/30 09:47

名無しのリーク
香川県ルーちゃん餃子のフジフーヅはバイトにパワハラの末指切断の大けがを負わせた犯罪企業
2017/03/29 23:34

高級時計 ブランド レディース
特恵中-新作入荷!
当社の商品は絶対の自信が御座います
迅速、確実にお客様の手元にお届け致します
実物写真、付属品を完備しております。
低価格を提供すると共に、品質を絶対保証しております
ご注文を期待しています
2017/03/28 18:37

カルティエ ソリテール
ブランドコピーブランドN級品専門店
史上最も激安ブランドブランドコピー-即日 配送可,100%入荷。
当店は正規品と同等品質は品質3年保証でご注文から5 日でお届け致します。
レディースとメンズ激安通販専門店!品質と本物は同様です。
全て新品、高い品質、激安 、送料は無料です( 日本全国)すべての商品は品質2年無料保証です。
ブランドコピー時計:
2017/03/24 14:04

カリマー
解りやすくて、とてもいいサイトですね!
phpは初心者ですが、最後まで到達できるよう頑張ります!
2017/03/23 04:03


ああああ
2017/03/23 00:54

オメガ ボーイズ
★2017最高等級新しい商品大量入荷!
■在庫情報随時更新!(*^-^*)
■信用第一、良い品質、低価格は。
★歓迎光臨★送料無料(日本全国)
ご注文を待ちしております
よろしくお願いいたします_(._.)_
2017/03/22 09:09


テスト
2017/03/21 14:02

ゆうた
かりんがすき
2017/03/17 14:36

saraebo
別windowsとして実装することなく、actionのphpで、コマンドとするデータベース等の更新で、その結果をクライアントに返さない(homeページの元画面は変わらない。)とする事はできるのでしょうか?
2017/03/17 12:09

残りを読む »