php支持GD

时间:2011-12-30 10:38:09

标签: php gd xampp

我正在使用" 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."

4 个答案:

答案 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 */
}