現在の位置: ホーム> 最新記事一覧> 画像生成検証コード:GD2画像は動的にテキストを追加します

画像生成検証コード:GD2画像は動的にテキストを追加します

M66 2025-05-29

Web開発では、フォームの自動提出を防ぐために、検証コード画像がよく使用されます。 PHPは、検証コード画像を生成するための豊富な画像処理関数を提供します。その中で、 ImageCreateFromgd2()は、GD2ファイルから画像リソースを作成するために使用される関数ですが、通常、画像を直接生成するのではなく、既存の画像リソースを読み取るために使用されます。ただし、 ImageGD2()関数を組み合わせて動的に生成された画像をGD2形式に保存し、 ImageCreateFromGD2()を使用して読み取り、処理できます。

この記事では、ランダムなテキストを使用して検証コードイメージを動的に生成し、画像を処理するためにImageCreateeFromgd2()を使用する方法を示します。

ステップの概要

  1. 画像リソースを作成します

  2. 背景色とランダム検証コードテキストを追加します

  3. .gd2形式として保存します

  4. .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フォントを使用して検証コードバージョンを実証する必要がありますか?