2

好的,这就是问题所在。此代码适用于本地主机,但不适用于实时站点

<?php
session_start();
header('Content-type: image/jpeg');

$text = $_SESSION['secure'];
$font_size = 30;
$image_width  = 120;
$image_height = 40;
$image = imagecreate($image_width, $image_height);
imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);
$line_color = imagecolorallocate($image, 0, 0, 0);

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, $line_color);
}

imagettftext($image, $font_size, 0, 15, 30, $text_color, 'font2.ttf', $text);
imagejpeg($image);
?>

本地主机和虚拟主机都运行相同的 php 版本

请在发布任何内容之前先看看这张照片!:

http://s2.postimg.org/etamdsk95/help_me.png

4

2 回答 2

0

您的代码有一些错误,但不是 PHPGD 库错误,请注意以下代码:

<?php
//session_start();
header('Content-Type: image/jpeg');
//$_SESSION['secure']; disabled, this will lead to notice: undefined index
$text = "he123"; 
$font_size = 30;
$image_width = 120;
$image_height = 40;

$image = imagecreate($image_width, $image_height) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($image, 255, 255, 255); //add background color
$text_color = imagecolorallocate($image, 255, 0, 0); //red for the text
$line_color = imagecolorallocate($image, 0,255,0); // green for the line

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, $line_color);
}

// add ./ to the font name
imagettftext($image, $font_size, 0, 15, 30, $text_color, "./font2.ttf", $text);
imagejpeg($image);
imagedestroy($image); // remember to clear the chace :p
?>

这是输出

于 2013-11-01T23:06:59.830 回答
0

尝试查看error.log(APACHE),也可能存在会话问题,您可以尝试使用“error_reporting(0); 隐藏所有错误;

尝试这个:

<?php
@session_start();
error_reporting(0);
@header('Content-type: image/jpeg');

$text = $_SESSION['secure'];
$font_size = 30;

$image_width = 120;
$image_height = 40;

$image = imagecreate($image_width, $image_height);
imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);
$line_color = imagecolorallocate($image, 0, 0, 0);

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, $line_color);
}

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

?>

但最好的办法是修复错误,所以请查看@error.log

http://php.net/manual/en/function.error-reporting.php

如果您收到任何错误消息,您可以告诉我们 - 所以我们会尽力帮助您 :)

于 2013-11-01T21:51:29.490 回答