2011-12-30 4 views
0

Я использую «xampp-win32-1.7.1-installer» как сервер & Dreamwaver cs5 для кодирования. Я хочу включить поддержку php GD. Я виделПоддержка GD в php

phpinfo(); 

Существует поддержка поддержки GD. Но это все еще не работает. Я не знаю, почему это не работает? Что мне делать?

Ну, на самом деле, я хочу создать изображение с php. Появляется текстовое поле & кнопка отправки. Когда я даю вход &, нажмите submit, он появится в этом окне изображения. Он может работать на многих других платформах, но на этот раз я хочу сделать это в 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

Ваш вывод изображения как необработанных данных. Это нормально, но вы также отправляете 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 */ 
} 
+0

Спасибо за объяснение. Вот почему это не сработало. Теперь я понял. Спасибо crolpa :) – webrider

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>'; 
} 
?> 
+0

Да, я понял. Большое спасибо за ответ. :) – webrider

+0

+1 для ваших манер;) – Alasdair

1

ли вы на самом деле отправки HTML После того как вы отправить заголовок контента изображение/JPEG?

Попробуйте, как followes:

<?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() перед отправкой заголовков содержимого изображения.

изменение: исправлена ​​небольшая ошибка.

+0

Да, я понял. Спасибо за повторное воспроизведение @Dennis jamin :) – webrider

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> 
+0

Многое спасибо Уважаемый Прасад, он работает абсолютно. :) :) :) – webrider

+0

Добро пожаловать. Счастливое кодирование. –