KUNISAN.JPブログ - 1627 / 1692 ページ

新規書き込み

PHP簡易時計プログラム

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月13日
とある理由から、Web開発言語の「PHP」を学習することにしました。

私の知っているWeb開発言語は、基本中の基本である「HTML」の他に、「JavaScript」「Perl」とありますが、「Perl」を知っていれば「PHP」は必要ないと言われていましたし、私もずっとそう思っていました。

ところが先日、私がよく利用しているモバイル広告掲載用のスクリプトが「Perl」では動かず、「PHP」でしか動かないということを知りました。

ということで早速本日「PHP」の本を購入して、プログラムを自作してみました。JPEGで時計を表示する、というものです。1分毎に時計の画像は更新されます。

■■■簡易時計プログラム■■■
<?php

//現在日時を取得
$now = getdate();

//現在の「時」を取得
$hr = $now[hours];

//現在の「分」を取得
$mn = $now[minutes];

//「短針」のX座標を取得
$sx = cos(deg2rad(90 - ($hr/12 + $mn/60/12) * 360)) * 65 + 120;

//「短針」のY座標を取得
$sy = -sin(deg2rad(90 - ($hr/12 + $mn/60/12) * 360)) * 65 + 120;

//「長針」のX座標を取得
$lx = cos(deg2rad(90 - $mn/60 * 360)) * 100 + 120;

//「長針」のY座標を取得
$ly = -sin(deg2rad(90 - $mn/60 * 360)) * 100 + 120;

//240x240の画像キャンパスを作成
$img = imagecreate(240,240);

//背景色を設定
$bgcolor = imagecolorallocate($img,0,0,0);

//背景色で塗りつぶし
imagefilledrectangle($img,0,0,240,240,$bgcolor);

//円の色を設定
$cccolor = imagecolorallocate($img,100,100,100);

//円を描く
imagearc($img,120,120,238,238,0,360,$cccolor);

//円の中心を塗りつぶす
imagefill($img,120,120,$cccolor);

//「短針」の色を設定
$shcolor = imagecolorallocate($img,255,255,255);

//「短針」を描く
imageline($img,120,120,$sx,$sy,$shcolor);

//「長針」の色を設定
$lhcolor = imagecolorallocate($img,255,255,255);

//「長針」を描く
imageline($img,120,120,$lx,$ly,$lhcolor);

//文字列の色を設定
$mjcolor = imagecolorallocate($img,255,255,255);

//10未満の場合に文字列を変更
if ($hr < 10) {
$hr = "0".$hr;
}
if ($mn < 10) {
$mn = "0".$mn;
}

//文字列を指定
$moji = $hr.":".$mn;

//文字列を描く
imagestring($img,2,202,220,$moji,$mjcolor);

//できた画像をJPEG形式で保存
imagejpeg($img,"clock.jpg");

?>
■■■■■■■■■■■■■■■

PHP対応のWebサーバーであれば、上記のプログラムをコピー&ペーストするだけで動くと思います。

「PHP」に触れるまでは新しいWeb開発言語を覚えることへの抵抗感(単純に「面倒」という思い)がありましたが、実際に使ってみると、「Perl」よりは随分とっつきやすい言語だということがわかりました。グラフィック関係の命令が使いやすいので、今後これを利用した新しいホームページを制作してみたいと思っています。





PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)