我正在使用" xampp-win32-1.7.1-installer"作为服务器& Dreamwaver cs5用于编码。我想启用php GD支持。我看到了
phpinfo();
显示GD支持已启用。但它仍然无法奏效。我不知道为什么它不起作用?我该怎么办?
嗯,实际上我想用php创建一个图像。有文字框和&提交按钮。当我给出一个输入&按提交,它出现在该图像框中。它可以在许多其他平台上做,但这次我想在php中做。
这是我的代码:
<?php
header("Content-type: image/jpeg");
?>
<form action="Creating_Images_with_PHP.php" method="get">
<input type="text" name="name" />
<input type="submit" value="Enter" />
</form>
<?php
$name = $_GET['name'];
$message = "Welcome to php academy, $name";
$length = strlen($message) * 9.3;
$image = imagecreate($length, 20);
$background = imagecolorallocate($image, 0, 0, 0);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5,5,1, $message, $foreground);
imagejpeg($image)
?>
,显示错误为:
"The image http://localhost/www/...blaa blaa blaa cannot be displayed because it contains errors."
答案 0 :(得分:1)
这是因为您的HTML表单会附加到图像输出的顶部。
将它们设为单独的脚本,或将其更改为:
<?php
if (isset($_GET['name']) && $_GET['name']!='')
{
header("Content-type: image/jpeg");
$name = $_GET['name'];
$message = "Welcome to php academy, $name";
$length = strlen($message) * 9.3;
$image = imagecreate($length, 20);
$background = imagecolorallocate($image, 0, 0, 0);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5,5,1, $message, $foreground);
imagejpeg($image);
}
else
{
echo '<html><body><form action="Creating_Images_with_PHP.php" method="get">
<input type="text" name="name" />
<input type="submit" value="Enter" />
</form></body></html>';
}
?>
答案 1 :(得分:1)
您是否在发送图像/ jpeg内容标题后实际发送HTML?
尝试以下:
<?php
ob_start();
?>
<form action="Creating_Images_with_PHP.php" method="get">
<input type="text" name="name" />
<input type="submit" value="Enter" />
</form>
<?php
if (isset($_GET['name']) && !empty($_GET['name']))
{
ob_clean();
header("Content-type: image/jpeg");
$name = $_GET['name'];
$message = "Welcome to php academy, $name";
$length = strlen($message) * 9.3;
$image = imagecreate($length, 20);
$background = imagecolorallocate($image, 0, 0, 0);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5,5,1, $message, $foreground);
imagejpeg($image);
}
?>
这首先打开输出缓冲,因此您可以在发送图像内容标题之前使用ob_clean()清除输出。
编辑:更正了小错误。
答案 2 :(得分:1)
我尝试使用您的代码。它对我来说很好。
<?php
if(isset($_GET['name']))
{
header("Content-type: image/jpeg");
$name = $_GET['name'];
$message = "Welcome to php academy, $name";
$length = strlen($message) * 9.3;
$image = imagecreate($length, 20);
$background = imagecolorallocate($image, 0, 0, 0);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5,5,1, $message, $foreground);
imagejpeg($image);
exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="" method="get">
<input type="text" name="name" />
<input type="submit" value="Enter" />
</form>
</body>
</html>
答案 3 :(得分:0)
将图像输出为原始数据。好的,但你也发送了html代码,从而破坏了你的形象。
首先,您需要将两者分开,这应该产生您需要的假设现有的PHP代码。
something.html
<form action="Creating_Images_with_PHP.php" method="get">
<input type="text" name="name" />
<input type="submit" value="Enter" />
</form>
Creating_Images_with_PHP.php
<?php
header("Content-type: image/jpeg");
$name = $_GET['name'];
$message = "Welcome to php academy, $name";
$length = strlen($message) * 9.3;
$image = imagecreate($length, 20);
$background = imagecolorallocate($image, 0, 0, 0);
$foreground = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 5,5,1, $message, $foreground);
imagejpeg($image)
?>
一旦测试完毕,就可以将脚本和html代码放在同一个文件中。您可以通过检查名称字段中的请求信息来执行此操作:
if(isset($_GET['name'][1])){
/* generate image */
}else{
/* output form */
}