用PHP生成的图像dosn't显示
问题描述:
我的代码有什么问题。用PHP生成的图像dosn't显示
图像不到风度展现在test2.php文件
文件:test2.php:
<img src = "test.php" />
文件:test.php的
session_start();
$md5_hash = md5(rand(0,999));
$security_code = substr($md5_hash, 15, 5);
$_SESSION["security_code"] = $security_code;
$width = 100;
$height = 20;
header("Content-type: image/png");
$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, $black);
//Add randomly generated string in white to the image
ImageString($image, 3, 30, 3, $security_code, $white);
//Throw in some lines to make it a little bit harder for any bots to break
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);
imagepng($image);
imagedestroy($image);
答
我认为要么你的脚本中有一个错误,执行失败或有一些额外的输出损坏图像数据。这可以是PHP块之前的单个空白字符(导致header
失败)甚至PHP错误消息。
尝试添加一些错误处理。在imagepng
通话和测试之前,移动header
通话权,如果HTTP标头尚未发送(见headers_sent
):
if (!headers_sent()) {
header("Content-type: image/png");
imagepng($image);
} else {
echo 'Internal Error';
}
imagedestroy($image);
然后直接调用脚本直接看到输出。
你试过“查看图像”吗? (意思是,在浏览器中打开图片网址)。 – edwin 2010-05-12 14:43:45