Web開発では、フォームの自動提出を防ぐために、検証コード画像がよく使用されます。 PHPは、検証コード画像を生成するための豊富な画像処理関数を提供します。その中で、 ImageCreateFromgd2()は、GD2ファイルから画像リソースを作成するために使用される関数ですが、通常、画像を直接生成するのではなく、既存の画像リソースを読み取るために使用されます。ただし、 ImageGD2()関数を組み合わせて動的に生成された画像をGD2形式に保存し、 ImageCreateFromGD2()を使用して読み取り、処理できます。
この記事では、ランダムなテキストを使用して検証コードイメージを動的に生成し、画像を処理するためにImageCreateeFromgd2()を使用する方法を示します。
画像リソースを作成します
背景色とランダム検証コードテキストを追加します
.gd2形式として保存します
.gd2ファイルを読み、最終画像として出力します
<?php
// Step 1: 検証コード画像を動的に作成します
$width = 150;
$height = 50;
$image = imagecreatetruecolor($width, $height);
// 背景色を設定します
$bgColor = imagecolorallocate($image, 255, 255, 255); // 白
imagefill($image, 0, 0, $bgColor);
// テキストの色を設定します
$textColor = imagecolorallocate($image, 0, 0, 0); // 黒
// ランダム検証コードコンテンツを生成します
$captcha = '';
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
for ($i = 0; $i < 6; $i++) {
$captcha .= $chars[rand(0, strlen($chars) - 1)];
}
// 画像にテキストを追加します
$fontSize = 5; // 1 到着 5 フォントサイズ
$x = 10;
$y = ($height - imagefontheight($fontSize)) / 2;
imagestring($image, $fontSize, $x, $y, $captcha, $textColor);
// Step 2: 画像を保存します .gd2 書類
$gd2Path = 'captcha.gd2';
imagegd2($image, $gd2Path);
// 元の画像リソースを破壊します
imagedestroy($image);
// Step 3: 使用 imagecreatefromgd2 画像を読んでください
$gd2Image = imagecreatefromgd2($gd2Path);
// 設定 HTTP ヘッダー出力画像
header('Content-Type: image/png');
imagepng($gd2Image);
// 掃除
imagedestroy($gd2Image);
?>
PHPインストール中にGDライブラリが有効になっていることを確認してください(通常はデフォルトで有効になります)。
ファイルの保存パスcaptcha.gd2に書き込みアクセス許可が必要です。
その後の検証のために、検証コードコンテンツを$ _Sessionに保存できます。
この動的に生成された検証コード画像をフォームに埋め込むことができます。
<form method="post" action="https://m66.net/verify.php">
<img src="https://m66.net/captcha.php" alt="検証コード">
<input type="text" name="captcha" placeholder="请输入検証コード">
<input type="submit" value="提出する">
</form>
ImageCreateFromgd2()は画像の作成に直接使用されていませんが、最初にImageGD2()を使用してGD2ファイルを生成し、次に読み取りと出力を生成することにより、検証コード画像を動的に生成する目的を実現できます。このアプローチは、中間画像キャッシュまたは画像テンプレートが必要なシーンに適しています。
より複雑な検証コード画像(歪み、干渉線、フォントの変更など)が必要な場合は、 ImagetTftext()関数を使用してTTFフォントを組み合わせて、より高度な機能を実現できます。
TTFフォントを使用して検証コードバージョンを実証する必要がありますか?