134リンハオさんによると
1.GDライブラリをロードする
GD ライブラリは、動的画像作成用のオープン関数ライブラリであり、公式 Web サイト http://www.boutell.com/gd からダウンロードできます。現在、GD ライブラリは、画像処理のために GIF、PNG、JPEG、WBMP、XBM などの複数の画像形式をサポートしています。
GD ライブラリは PHP 5 にデフォルトでインストールされますが、GD ライブラリをアクティブにするには、php.ini ファイルを変更する必要があります。ファイル内の「;extension=php_gd2.dll」オプションの前のセミコロン「;」を削除し、変更したファイルを保存し、Apache サーバーを再起動して有効にします。
2.簡単な画像を作成します
GD2 関数ライブラリを使用して、さまざまなグラフィックスや画像を処理します。キャンバスの作成は、GD2 関数ライブラリを使用してイメージを作成する最初のステップです。どのような種類のイメージを作成する場合でも、最初にキャンバスを作成する必要があり、他のすべての操作はこのキャンバス上で完了します。 GD2 関数ライブラリでのキャンバスの作成は、imagecreate() 関数を通じて実行できます。
imagecreate() 関数を使用して幅 200 ピクセル、高さ 60 ピクセルのキャンバスを作成し、キャンバスの色を RGB (225、66、159) に設定し、最終的に GIF 形式で画像を出力します。 コードは次のとおりです。次のように:
$im = imagecreate(200,60); //キャンバスを作成します
$white = imagecolorallocate($im, 225,66,159) //キャンバスの背景色を明るい緑色に設定します
imagegif( $im );
PHP の GD ライブラリは中国語をサポートしていますが、imageString() 関数を使用して中国語の文字列を直接描画すると、文字化けが表示されます。これは、GD2 が UTF-8 形式でしか受け取れないためです。中国語.8 エンコード形式であり、デフォルトで英語のフォントが使用されるため、中国語の文字列を出力するには、中国語の文字列をトランスコードし、中国語の文字に使用されるフォントを設定する必要があります。そうしないと、文字化けだけが出力されます。
imageTTFText() 関数を使用して、「これはテストです」というテキストを画像に出力します。コードは次のとおりです。
header("content-type:image/jpeg"); //出力を画像タイプとして定義します
$im=imagecreatefromjpeg("images/photo.jpg"); //写真を読み込みます
$textcolor= imagecolorallocate($im,56,73,136);//フォントの色を青、値をRGBカラー値に設定します
$fnt="c:/windows/fonts/simhei.ttf" //フォントを定義します
$ tto=iconv ("gb2312","utf-8","これはテストです") //出力フォント文字列を定義します
imageTTFText($im,220,0,480,340,$textcolor,$fnt,$motto); /TTF テキストを書き込む 画像に移動します
imagejpeg($im) //JPEG グラフィックを作成します
imagedestroy($im); //グラフィックを終了し、メモリ領域を解放します
?>
;
checks.php ファイルを作成し、ファイル内の GD2 関数を使用して 4 桁の確認コードを作成し、生成された確認コードをセッションに保存します。
session_start();
header("content-type:image/png"); // 作成する画像の形式を設定します
$image_width=70 // 画像の高さを設定します
srand( )*100000); //乱数のシードを設定します
for($i=0;$i<4;$i++){ .=dechex(rand(0,15));
}
$_SESSION[check_checks] ]=$new_number; //取得した乱数検証コードをSESSION変数に書き込みます
$num_image=imagecreate($image_width,$image_height) //キャンバスを作成します
imagecolorallocate($num_image,255,255,255);キャンバスの色
for($i=0;$i
$y=mt_rand(1,$image_height/4) )); //文字の色を設定します
imagestring($num_image,$font,$x,$y,$_SESSION[check_checks] [$i],$color); //文字を水平に出力します
}
imagepng($num_image ) ;
ユーザー ログイン フォームを作成し、checks.php を呼び出して画像のコンテンツを次の形式で出力します。
session_start();
if($_POST["送信"]!=""){
$checks=$_POST["チェック"];
if($checks==""){
echo "<script>alert('検証コードを空にすることはできません');window.location.href='index.php';</script>";
}
if($checks==$_SESSION[check_checks] ){
echo "<script> アラート('ユーザーはログインに成功しました!');window.location.href='index.php';</script>";
}else{
echo "<script> アラート('入力した確認コードが間違っています!');window.location.href='index.php';</script>";
}
}
?>