PHP は非常に強力な画像処理機能を備えており、Web 画像を簡単かつ動的に生成できます。
以下はphpを使用して作成した簡単なカウンターです。
1. 一般的なアイデア:
Web ページにアクセスしたときに、以前の訪問者数をテキスト ファイルに記録し、そこから以前の訪問者数を読み取り、1 を加算して最新の訪問者数を取得します。数値を標準形式にフォーマットし、画像処理関数を呼び出して数値を画像に出力し、訪問者数を記録するファイルに新しい訪問数を書き込みます。
2. プログラムで使用される関数の説明:
A. 関連するファイル操作:
関数のプロトタイプ: int fopen(string filename, string mode);ファイル ストリーム ポインタを返します。それ以外の場合は FALSE(0) を返します。
パラメータの説明:
string filename -- 開かれるファイルの名前は文字列の形式である必要があります。
例: "zzm.txt"、"..zzm.txt" など。 O 文字列モード - ファイルを開く方法は文字形式である必要があります。
'r'、読み取り専用形式。ファイル ポインターはファイルの先頭を指します。 out being out out out out out out over to ファイルが存在しない場合は、試みが行われますファイルを作成します。 '' W+'、読み取りおよび書き込み可能、ファイル ポインターはファイルの先頭を指し、ファイルの長さを 0 にカットします。
ファイルが存在しない場合は、ファイルの作成を試みます。
'a'、追加形式 (書き込みのみ可能)、ファイル ポインターはファイルの末尾を指します。ファイル
ファイルが存在しない場合は、ファイルの作成が試行されます。
'a+'、読み取りおよび書き込み可能、ファイル ポインタはファイルの末尾を指します。
ファイルが存在しない場合は、ファイルの作成が試行されます。
例: 現在のディレクトリの下にある「zzm.txt」を読み取り専用形式で開きます
$fp = fopen("zzm.txt", "r");
b. ファイルを閉じます:
関数プロトタイプ: int fclose(int) fp) ;
戻り結果: 成功した場合は 1 が返され、失敗した場合は 0 が返されます
パラメーターの説明: int fp は、fopen 関数によって返されたファイル ストリーム ポインターです。
例: fopen で開いたばかりの zzm.txt ファイルを閉じます
fclose($fp);
c. ファイルを読み取ります:
関数のプロトタイプ: string fgets(int fp, int length); 戻り値: return length -1 length;文字列、ファイルの終わりに達した場合は、EOF (ファイルの終わり) を返します
パラメーターの説明:
int fp – データを読み取るファイル ストリーム ポインター、fopen 関数によって返される値
int length – 文字数Number を読み取る場合、実際に読み取られる文字数は length -1 です
例: $fp から 9 文字を読み取ります $str1 = fgets($fp,10); ファイルの書き込み:
関数プロトタイプ: int fputs( int fp , string str, int [length]);
戻り値: fclose と同じ パラメータの説明:
int fp -- 情報を書き込むファイル ストリーム ポインタ、fopen 関数によって返される値
string str -- 書き込む文字列ファイルに。T int length - 書き込みの長さ。オプション。長さを指定しない場合は文字列全体が書き込まれ、それ以外の場合は長さを書き込みます。
例: $fp に "0000000001" を書き込みます
fput($fp, "0000000001");
B. 関連する文字列関数:
関数のプロトタイプ: int strlen(string str);文字列の長さを返します
パラメータの説明:
String str -- 長さを計算する文字列
例: "000000000" の文字列の長さを計算します
$str2 = "000000000";
$len2 = strlen($ str );
b. 文字列の追加: を使用して 2 つの文字列を接続します。
例: $str1 と $str2 を追加します
$str = $str1.$str2
C. 関連するグラフィック関数:
関数のプロトタイプ: int imagecreate(int x_size, int y_size);
戻り値: 画像のサイズを持つ空の画像識別番号 (ImageID) を返します $ImageID = imagecreate(88, 31);
b. 画像に色を割り当てます:
関数プロトタイプ: int imagecolorallocate(int im, int red, int green) 、int blue); return result:ime im)RGB色の識別番号を返します。 ' s 1 -- m m- rg 識別番号は $white 白色で、白色 RGB は (255,255,255) です
, int x, int y, intcol)
戻り値: 正常に 1 を返し、それ以外の場合は 0 を返します
パラメータの説明: int im、画像の識別番号
Int x、int y、画像の (x, y) 座標から色の塗りつぶしを開始します
(0,0) は画像の左上隅を表します
int Col、色の識別番号
例: 画像 (つまり、画像全体) の左上隅から始めて黒で塗りつぶします (imagecolorallocate 関数
を使用して、黒の色識別番号を $black として定義しています)。
Imagefill($im, 0, 0, $black);
d. 画像の幅を計算します:
関数プロトタイプ: int imagex(int im);
戻り値: 画像の幅を返します (単位はピクセル)
パラメーターの説明: int im、画像の識別番号。
例: 画像 $im の幅を計算します
$px = imagex($im);
e. 画像内に横書きテキストを書き込みます:
関数プロトタイプ: int imagestring(int im, int font, int x, int y, string) s, int col)
戻り結果: 成功した場合は 1、それ以外の場合は 0
パラメータの説明: int im、画像識別番号
int フォント、フォント識別番号、組み込みフォント 1 ~ 5、ユーザーは imageloadfont() を自分で使用できますか?
??? , String S, 書き込む文字列
int color, フォントの色認識番号
例:画像(3,3)の位置ではフォントサイズは3、色は白 色識別番号は$white)のstring "E&J Counter"
using ‐ ‐ ‐ ‐ ‐ ‐ imageString($im, 3, 3, 3, "E&J Counter", $white);画像内に直線を描画します:
関数プロトタイプ: int imageline(int im, int x1, int y1, int x2, int y2, int col);
戻り値: 成功した場合は 1 を返し、それ以外の場合は 0 を返す
パラメータの説明: int im、画像の識別番号
開始座標線の座標は int x2、int y2、線の終了座標は int col、線の色識別番号は
例: 画像内に (1,14) から (85,14) まで線を描画します。 $white の直線を持つ $im imageline($im, 1, 14, 85, 14, $white); 画像を GIF 形式に出力します。 ‐ アウト アウト ‐ ‐ ‐‐‐‐‐ �� � � 1 を返します。成功した場合は 0 を返します
パラメータの説明: int im、画像識別番号
文字列ファイル名、オプションで画像の名前を生成します、ファイル名が空の場合は直接?
画像、ヘッダーを使用する必要がありますか? -type: image/gif") phpで出力した内容を画像として事前定義します
例: 画像 $im をファイル名 "image1.gif" で画像に出力します
Imagegif($im, "image1.gif" ") ;
h. イメージを解放します:
関数のプロトタイプ: int imagedestroy(int im);
戻り値: 成功した場合は 1 を返し、それ以外の場合は 0 を返します
パラメーターの説明: int im、解放されるイメージの識別番号。この関数は、識別番号 im のイメージと、イメージによって占有されているシステム リソースを解放します。
例: イメージ $im を解放します。
Imagedestroy($im);
3. このカウンターをインストールする方法:
A. システムには PHP インタープリターがインストールされている必要があります。 PHP は http://www.php.net/ からダウンロードできます。このサイトには、閲覧またはダウンロードして読むことができる詳細な技術情報も多数あります。 PHP のインストール方法については、独自の手順を参照してください。
B. 次のプログラム リストを拡張子 php のファイルにコピーし、php スクリプトを実行できるディレクトリに置きますか?
そして、そのディレクトリに zzm.txt という名前のプレーン テキスト ファイルを作成します。このファイルの目的は、過去の訪問者数を記録することです。カウンタの初期値 (5000 など) を事前に設定できます。
C. Web ページでこのカウンターを呼び出す方法は?次の方法で呼び出すことができます:
添付ファイル: 完全なプログラム リスト
Header("Content-type: image/gif"); / /出力を画像タイプとして定義します $fp = fopen("zzm.txt", "r")
//以前の訪問者数を読み取り形式で記録するファイル zzm.txt を開きます
$str1 = fgets ($fp,10) ; // この数値に記録される最大訪問数は 999999999 です
// カウンターを追加します
fclose ($ fp); zzm.txt", "w");
//次のように記述して、訪問者数を記録するファイル zzm.txt を開きます
fputs($fp, $str1);
//最新の訪問者数をファイルに書き込みます
fclose ($fp);
// ファイルを閉じます
/*
以下は、訪問者数が 9 桁未満 (4 桁) の場合、
次に変換します。訪問者の数を 000005000 の形式で出力します。方法は、訪問者数の桁数を計算し、000000000の桁数(9桁)と比較して桁の差を求め、数字の前に0を追加します。たとえば、5000 と 000000000 の長さは 5 異なるため、5000 の前に 5 つのゼロを追加する必要があります。計数桁の最大数
$dif = $len2 - $len1;
// 2 つの桁の差、つまり前に追加される 0 の数を計算します
$rest = substr($ str2, 0, $dif);
//インターセプト0を追加します
$string = $rest.$str1;
//先頭に0を追加します $font = 4; //フォントサイズを定義します $im = imagecreate( 88,31);
//新しい画像
$ black = ImageColorAllocate($im, 0,0,0)
// black , 0,0,$black); // カウンターの背景色を設定しますto black
$px = (imagesx($im)-8.3*strlen($string))/2;
//文字列座標の長さに基づいて文字列の書き込みが開始されるレベルを計算します。目的は文字列を水平方向に中央揃えにします
ImageString($im,3,$px,2,"E&J Counter",$white);
//画像に「E&J Counter」を書き込みます
imageline($im , 1, 14, 85, 14, $white);
//水平線を描画します
ImageString($im,$font,$px,15.5,$string,$white);
//訪問者数を書き込みます
ImageGif($IM) ; // 画像を gif 形式で出力します
// 画像を解放します
;
以上、php3 で書かれた簡単なカウンターを紹介しました。10 進数カウンターの内容も含めて、PHP チュートリアルに興味のある方の参考になれば幸いです。