【问题标题】:.ttf file does not work.ttf 文件不起作用
【发布时间】:2019-02-02 15:21:27
【问题描述】:

我有一个要加载到验证码图像的.ttf 文件。但我的.ttf 只是不起作用。当我包含.ttf 文件时,图像无法加载并出现错误。

这是我的验证码:

<?php

session_start();

$md5_hash = md5(rand(0,999));

$captcha = substr($md5_hash, 16, 5);

$_SESSION["captcha"] = $captcha;

$width = 205;
$height = 60;

$image = imagecreate($width, $height);

$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$grey = imagecolorallocate($image, 204, 204, 204);

imagefill($image, 0, 0, $white);

$font = imageloadfont('Xeron.ttf');
imagestring($image, $font, 70, 20, $captcha, $black);

imagerectangle($image, 0, 0, $width-1, $height-1, $grey);
imageline($image, 0, $height/2, $width, $height/2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey);

header("Content-type: image/jpeg");

imagejpeg($image);

imagedestroy($image);

?>

我是php新手,请帮忙..

编辑

我什至用以下代码尝试过,但我的图像仍然无法加载

$captcha_num = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz';
$captcha_num = substr(str_shuffle($captcha_num), 0, 6);
$_SESSION["code"] = $captcha_num;

$font_size = 30;
$img_width = 70;
$img_height = 40;

header('Content-type: image/jpeg');

$image = imagecreate($img_width, $img_height); // create background image with dimensions
imagecolorallocate($image, 255, 255, 255); // set background color

$text_color = imagecolorallocate($image, 0, 0, 0); // set captcha text color

imagettftext($image, $font_size, 0, 15, 30, $text_color, 'Xeron.ttf', $captcha_num);
imagejpeg($image);

【问题讨论】:

  • 字体 xeron.ttf 的位置是什么??
  • 它和我的 captcha.php 在同一个位置
  • ok.. 你用另一种 .ttf 字体试过了吗??
  • 尝试将 'Xeron.ttf' 更改为 './Xeron.ttf' 以明确您想要当前工作目录。或指定完整路径。您的错误日志显示什么?仅供参考:stackoverflow.com/questions/1053424/…
  • @DrMJ 是的,我尝试过使用不同的 .ttf 文件。但它仍然没有加载。

标签: php css captcha


【解决方案1】:

我正在提供 php 验证码的示例代码...您可以使用您的值、字体、字体颜色等进行尝试。

captcha.php

<?php 
session_start();
//Settings: You can customize the captcha here
$image_width = 210;
$image_height = 60;
$characters_on_image = 7;
$font = './monofont.ttf';

//The characters that can be used in the CAPTCHA code.
//avoid confusing characters (l 1 and i for example)
$possible_letters = '23456789ABDEFGHLMNQRTWY';
$random_dots = 15;
$random_lines = 3;
$captcha_text_color="#4593BC";
$captcha_noice_color = "#34495e";

$code = '';

$i = 0;
 while ($i < $characters_on_image) { 
 $code .= substr($possible_letters, mt_rand(0, strlen($possible_letters)-1), 1);
 $i++;
}


$font_size = $image_height * 0.6;
$image = @imagecreate($image_width, $image_height);


/* setting the background, text and noise colours here */
$background_color = imagecolorallocate($image, 255, 255, 255);

$arr_text_color = hexrgb($captcha_text_color);
$text_color = imagecolorallocate($image, $arr_text_color['red'], 
    $arr_text_color['green'], $arr_text_color['blue']);

$arr_noice_color = hexrgb($captcha_noice_color);
$image_noise_color = imagecolorallocate($image, $arr_noice_color['red'], 
    $arr_noice_color['green'], $arr_noice_color['blue']);


/* generating the dots randomly in background */
for( $i=0; $i<$random_dots; $i++ ) {
imagefilledellipse($image, mt_rand(0,$image_width),
 mt_rand(0,$image_height), 2, 3, $image_noise_color);
}


/* generating lines randomly in background of image */
for( $i=0; $i<$random_lines; $i++ ) {
imageline($image, mt_rand(0,$image_width), mt_rand(0,$image_height),
mt_rand(0,$image_width), mt_rand(0,$image_height), $image_noise_color);
}


/* create a text box and add 6 letters code in it */
$textbox = imagettfbbox($font_size, 0, $font, $code); 
$x = ($image_width - $textbox[4])/2;
$y = ($image_height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font , $code);


/* Show captcha image in the page html page */
header('Content-Type: image/jpeg');// defining the image type to be shown in browser window
imagejpeg($image);//showing the image
imagedestroy($image);//destroying the image instance
 $_SESSION['captcha'] = $code;

function hexrgb ($hexstr){
  $int = hexdec($hexstr);
  return array("red" => 0xFF & ($int >> 0x10),
           "green" => 0xFF & ($int >> 0x8),
           "blue" => 0xFF & $int);
}
?>

index.php

 //to display captcha image

<img src="captcha.php?rand=<?php echo rand();?>" id='captchaimg' >

【讨论】:

  • 我已经编辑了一些部分...创建 captcha.php 文件并将其保存在根文件夹中,然后添加为 index.php 提供的代码
  • 请戳我的whatsapp no 9881150272
猜你喜欢
  • 2016-10-12
  • 2014-02-06
  • 2012-05-09
  • 2013-05-25
  • 2018-11-11
  • 2011-07-08
  • 1970-01-01
  • 2016-09-16
  • 1970-01-01
相关资源
最近更新 更多