1,323 views
この記事は最終更新から 2213日 が経過しています。
やってみたいこと
「(6) SQLiteでアクセスカウンタ作成 #1」 ではカウント値をテキスト表示していた。
今回はこれを画像表示に変更してみる。
画像は以下のような0~9の画像を自作した。
counter_img.phpでは、引数で渡されたカウント値に従って0~9の画像を連結した1枚のGIF画像を作成し、HTTPリクエストに対する応答として出力するようにした。
実行サンプルはこちらです。
//www.dogrow.net/php/sample/00007/
プログラム作成
index.php
<!DOCTYPE html> <HTML> <HEAD> <META CHARSET="UTF-8" /> <TITLE>SQLiteサンプル</TITLE> </HEAD> </BODY> <?php // カウント値を表示(画像タイプ1且つ、6桁表示を指定) echo "<img src="counter_img.php?typ=1&dig=6">"; ?> </BODY> </HTML>
CCounter.php
「(6) SQLiteでアクセスカウンタ作成 #1」と同じ。
counter_img.php
<?php // 引数を取得 $typ = $_GET['typ']; // 画像タイプ $dig = $_GET['dig']; // 桁数 if($dig > 10){ $dig = 10; } // カウント値を取得 require_once("CCounter.php"); $cCnt = new CCounter(); $cCnt->connect_db(); // DB接続 $cnt = $cCnt->count_up(); // カウントアップ&値取得 $cCnt->disconnect_db(); // DB切断 // 1桁ずつ画像を作成 $digImg = array(); $w = 0; $h = 0; for($i=0 ; $i<$dig ; $i++){ $v = $cnt % 10; $imgPath = $typ."/".$v.".gif"; $digImg[] = imagecreatefromgif($imgPath); if($w == 0){ list($w, $h) = getimagesize($imgPath); } $cnt = intval($cnt / 10); } $digImg = array_reverse($digImg); // 結合画像を作成 $newImg = imagecreate($w * $dig, $h); $x = 0; foreach($digImg as $oneImg){ imagecopy($newImg, $oneImg, $x, 0, 0, 0, $w, $h); imagedestroy($oneImg); $x += $w; } // GIF画像出力 header('Content-Type: image/gif'); imagegif($newImg); imagedestroy($newImg); ?>
実行サンプルはこちらです。
//www.dogrow.net/php/sample/00007/