1,884 views
やってみたいこと
「(6) SQLiteでアクセスカウンタ作成 #1」 ではカウント値をテキスト表示していた。
今回はこれを画像表示に変更してみる。
画像は以下のような0~9の画像を自作した。
counter_img.phpでは、引数で渡されたカウント値に従って0~9の画像を連結した1枚のGIF画像を作成し、HTTPリクエストに対する応答として出力するようにした。




















実行サンプルはこちらです。
//www.dogrow.net/php/sample/00007/
プログラム作成
<!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>
<?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/
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2025-11-17: 0回 2025-11-16: 0回 2025-11-15: 0回 2025-11-14: 0回 2025-11-13: 0回 2025-11-12: 1回 2025-11-11: 0回
