単純な検証コードは、実際には画像内のいくつかの文字を出力しています。これは、imagestring 関数を通じて実現できます。
ただし、処理の面では、検証コードをより安全にし、他のプログラムが自動的に認識するのを防ぐために、検証コードに何らかの干渉処理を実行する必要があることがよくあります。通常、いくつかのノイズ点、つまり干渉線が描画されます。セグメントが描画され、出力された文字が傾いて歪んで動作します。
imagesetpixel を使用して点を描画してノイズ干渉を実現することもできますが、1 つの点だけを描画してもあまり役に立たないため、ループを使用してランダムに描画することがよくあります。
リーリー$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00, 0xFF, 0x00);
$ white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//ランダムな検証コードを生成します
$code = '';
for($i = 0 ; $i $code .= rand(0, 9);
}
imagestring($img, 5, 10, 10, $code, $black ) ;
//ノイズ干渉を追加
for($i=0;$i
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $ black); //imagesetpixel — 単一ピクセルを描画します。構文: bool imagesetpixel ( resource $image , int $x , int $y , int $color )
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}
//検証コードを出力
header("content-type: image/png");
imagepng($img); //PNG形式で出力します画像をブラウザまたはファイルに送信します
imagedestroy($img); //画像処理が完了したら、imagedestroy() 命令を使用して画像リソースを破棄し、メモリを解放します。これを使って。
?>
りー