gpt4 book ai didi

php - 生成验证码图像 PHP

转载 作者:行者123 更新时间:2023-12-03 23:09:16 29 4
gpt4 key购买 nike

我想使用 PHP imagettftext 生成验证码图像。以下是我的代码。它给出了一个空图像。我想解决这个问题。

我已经测试了代码,但无法找到为什么图像没有 bieng 显示,尽管我的随机文本被传递到验证码图像生成功能。

<?php

function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}

function generateCaptchaImage($text = 'good'){
echo $text;
echo 'OK';
// Set the content-type
header('Content-Type: image/png');

$width = 200;
$height = 30;
$font = 'ThisisKeSha.ttf';

// Create the image
$im = imagecreatetruecolor($width, $height);

//ADD NOISE - DRAW background squares
$square_count = 6;
for ($i = 0; $i < 10; $i++) {
$cx = (int)rand(0, $width/2);
$cy = (int)rand(0, $height);
$h = $cy + (int)rand(0, $height/5);
$w = $cx + (int)rand($width/3, $width);
imagefilledrectangle($im, $cx, $cy, $w, $h, $white);
}

//ADD NOISE - DRAW ELLIPSES
$ellipse_count = 5;
for ($i = 0; $i < $ellipse_count; $i++) {
$cx = (int)rand(-1*($width/2), $width + ($width/2));
$cy = (int)rand(-1*($height/2), $height + ($height/2));
$h = (int)rand($height/2, 2*$height);
$w = (int)rand($width/2, 2*$width);
imageellipse($im, $cx, $cy, $w, $h, $grey);
}

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

imagepng($im);

}

$randomString = generateRandomString();
generateCaptchaImage($randomString);

?>

最佳答案

试试这段代码;

<?php
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 1)];
}
return $randomString;
}
function generateCaptchaImage($text = 'good'){
// Set the content-type
header('Content-Type: image/png');
$width = 200;
$height = 30;
// Create the image
$im = imagecreatetruecolor($width, $height);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

//ADD NOISE - DRAW background squares
$square_count = 6;
for($i = 0; $i < $square_count; $i++){
$cx = rand(0,$width);
$cy = (int)rand(0, $width/2);
$h = $cy + (int)rand(0, $height/5);
$w = $cx + (int)rand($width/3, $width);
imagefilledrectangle($im, $cx, $cy, $w, $h, $white);
}

//ADD NOISE - DRAW ELLIPSES
$ellipse_count = 5;
for ($i = 0; $i < $ellipse_count; $i++) {
$cx = (int)rand(-1*($width/2), $width + ($width/2));
$cy = (int)rand(-1*($height/2), $height + ($height/2));
$h = (int)rand($height/2, 2*$height);
$w = (int)rand($width/2, 2*$width);
imageellipse($im, $cx, $cy, $w, $h, $grey);
}

// Replace path by your own font path
$font = 'ThisisKeSha.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
}

$randomString = generateRandomString();
generateCaptchaImage($randomString);
?>

您没有生成颜色 $white$black$grey。此外,字体必须位于此 php 文件的同一文件夹中。

关于php - 生成验证码图像 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749593/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com