Ext JSやRapid Driveなど
システム開発の技術情報をご紹介。

お問い合わせ 資料請求 無料見積り

お電話でお気軽にお問い合わせくださいTel 03-6805-2904 営業時間 [平日]AM 9:30 - PM 6:30

画像操作

画像操作について

画像へテキストを埋め込む

生成した画像へテキストを埋め込む

バナー広告のプレートなどのように、画像に任意のテキストを埋め込んで、画像とテキストを一緒に表示する場合もあります。

テキストを描画する
<?php
    header( "Content-Type: image/png" );
    $image = imagecreate( 120, 120 );

    $green = imagecolorallocate( $image, 131, 195, 28 );
    $white = imagecolorallocate( $image, 255, 255, 255 );

    $message = "PHP Beginner";
    $start_x = 60 - ( strlen( $message ) * imagefontwidth( 5 ) / 2 );
    $start_y = 60 - imagefontheight( 5 ) / 2;

    imagestring( $image, 5, $start_x, $start_y, $message, $white );

    imagepng( $image );
    imagedestroy( $image );
?>

上記のスクリプトでは、imagecreate()関数で生成した画像に、指定されたテキスト「PHP Beginner」を、imagestring()関数で埋め込んでいます。

strlen()関数で文字列の長さを、imagefontwidth()関数でフォントの幅を、imagefontheight()関数でフォントの高さをそれぞれ取得します。

実行結果
生成した画像に、指定されたテキストを埋めこむ。
文字列を水平に描画する。
imagestring( image, font, x, y, string string, color );
imagestring( image, font, x, y, string string, color );
strlen( string, $string );
フォントの幅を取得する。
imagefontwidth( int font );
フォントの高さを取得する。
imagefontheight( int font );

これまで学習した画像関数を使用して、画像の色や大きさ、形、テキストの色やフォントを変えて、いろいろな画像を描いてみてください。

アクセスカウンター

アクセスカウンターとは、あるWebページに何回アクセスがあったかを数えるプログラムおよびその表示結果のことです。

アクセスカウンターを使用して、「あなたは○○人目のお客様です」のようにページ上に表示されているWebサイトも多々あります。高機能なものになると、アクセス記録を取って解析する機能を持ったものや、同一アドレスからの連続アクセスを除外する機能を持つものなどもあります。

今回はまず、「ファイル操作」の「ファイルを開く」でローカルディスク(C:)直下に作成したtemplateディレクトリに、「count.txt」というテキストファイルを作成します。「count.txt」には「0」とだけ入力します。

アクセスカウンターを作成
<?php
    $fp = fopen( "c:\template\count.txt", "r+" );
    $count = fread( $fp, 10 );
    $count = $count + 1;

    fseek( $fp, 0 );
    fputs( $fp, $count );
    fclose( $fp );
?>

<p>あなたは <?php echo $count; ?> 人目のお客様です。</p>

上記のスクリプトでは、あらかじめ作成しておいたアクセス数を記録するcount.txtファイルを、読み込みおよび書き込みができるように、fopen()関数の引数に「r+」を指定して開いています。

fseek()関数は、ファイルポインタの位置を移動します。引数に「0」を指定することで、ファイル内の先頭に移動するので、加算したアクセス数をfwrite()関数で書き込むことができます。

実行結果
あなたは1人目のお客様です。
あなたは2人目のお客様です。

上記のスクリプトから、一回目にアクセスした場合は、「あなたは1人目のお客様です。」が表示され、2回目にアクセスした場合は「あなたは2人目のお客様です。」が表示されます。

ファイルポインタを移動する
あなたは1人目のお客様です。
あなたは2人目のお客様です。
handleファイルポインタを指定します。
offset移動数を指定します。移動数は基準点(始点)から何バイト移動するかをバイト数で示します。
whence省略可能なオプション引数で、始点、つまり移動の開始位置を指定します。省略した場合にはファイルの最初におかれます。第3引数で指定できる値は、注)表1の「fseek()関数における始点」の通りです。
whence説明
SEEK_SET始点をファイルの最初に置く(デフォルト)
SEEK_CUR始点を現在のファイルポインタの位置に置く
SEEK_END始点をファイルの終端に置く
画像で生成するアクセスカウンター
<?php
    $fp = fopen( "c:\template\count.txt", "r+" );
    $count = fread( $fp, 10 );
    $count = $count + 1;

    header( "Content-Type: image/png" );
    $image = imagecreate( 120, 120 );

    $green = imagecolorallocate( $image, 131, 195, 28 );
    $white = imagecolorallocate( $image, 255, 255, 255 );

    $start_x = 60 - ( strlen( $count ) * imagefontwidth( 5 ) / 2 );
    $start_y = 60 - imagefontheight( 5 ) / 2;

    imagestring( $image, 5, $start_x, $start_y, $count, $white );

    imagepng( $image );
    imagedestroy( $image );

    fseek( $fp, 0 );
    fputs( $fp, $count );
    fclose( $fp );
?>
実行結果
一回目のアクセス

一回目のアクセス時は「1」、二回目アクセス時は「2」となります。