(7) SQLiteでアクセスカウンタ作成 #2 (画像化)

投稿者: | 2016年10月22日

この記事は最終更新から 825日 が経過しています。

やってみたいこと

「(6) SQLiteでアクセスカウンタ作成 #1」 ではカウント値をテキスト表示していた。
今回はこれを画像表示に変更してみる。

画像は以下のような0~9の画像を自作した。
counter_img.phpでは、引数で渡されたカウント値に従って0~9の画像を連結した1枚のGIF画像を作成し、HTTPリクエストに対する応答として出力するようにした。

00007_1

実行サンプルはこちらです。
//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/


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)