这是generate.php代码:
<?php
ob_start();
session_start();
header('content-type:image/jpeg');
$text=$_SESSION['secure'];
$font_size=30;
$width=100;
$height=40;
$image=imagecreate($width, $height);
imagecolorallocate($image, 0, 0, 0);
$text_color=imagecolorallocate($image, 255, 255, 255);
$font='Consolas.ttf';
for($x=1; $x <= 30; $x++) {
$x1 = rand(1, 100);
$y1 = rand(1, 100);
$x2 = rand(1, 100);
$y2 = rand(1, 100);
imageline($image, $x1, $y1, $x2, $y2, $text);
}
imagettftext($image, $font_size, 0, 15, 30, $text_color, $font, $text);
$imgSrc="out.png";
imagepng($image, $imgSrc);
?>
这是用于显示图像的HTML代码,此处out.png已成功生成并加载到页面中,但无法找到数字。
<div class="form-group mx-auto text-center">
<input type="hidden" name="cap_hidden" value="<?php echo $_SESSION['secure']; ?>">
<img src="out.png">
</div>
我找到了一个类似的问题,但它没有帮助我,这就是我在这里发布的原因。 问题是图像仅使用线条生成,但没有数字可见。
答案 0 :(得分:0)
我想图像上有文字,但它是白色的 也许你可以改变文本的颜色 http://php.net/manual/de/function.imagecolorallocate.php
这些参数是0到255或十六进制之间的整数 介于0x00和0xFF之间。
0
为黑色,255
为白色。
您可能希望查看实例 http://php.net/manual/en/function.imagettftext.php
// 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);
// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = 'arial.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);
您也可以在以下位置查看您的脚本:
$image=imagecreate($width, $height);
imagecolorallocate($image, 0, 0, 0);
$text_color=imagecolorallocate($image, 255, 255, 255);
imagecolorallocate($image, 0, 0, 0);
的结果未在任何地方分配。
答案 1 :(得分:0)
看起来字体没有正确加载。
根据PHP使用的GD库版本,当fontfile不以前导/开头时,然后.ttf将附加到文件名,库将尝试沿库定义的字体路径搜索该文件名。 PHP: imagettftext - Manual