好了,我正在学习如何使用PHP的GD库来生成投票、图像等。问题是,当使用imagejpeg函数输出图像时,屏幕上什么都没有显示。在本练习中,我在HTML论坛上输入文本,需要使用GD库将其放在图像上,基本上是将文本放在图像上。这很简单,我就是不明白为什么我的图片不能显示出来。下面是HTML表单代码和PHP代码。
HTML表单:
<html>
<head>
<title> Create Buttons </title>
</head>
<body>
<form action ="button.php" method ="post">
<p> Type button text here </p>
<input type="text" name="button_text" size ="20" />
<p> Choose button color: </p>
<input type ="radio" name="color" value="red"> Red <br>
<input type ="radio" name="color" value="green"> Green <br>
<input type ="radio" name="color" value="blue"> Blue <br>
<input type ="submit" value ="Create Button" />
</form>
</body>
</html>PHP代码:
<?php
Header('Content-type: image/jpeg');
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$button_text = $_POST['button_text']; var_dump($button_text);
$color = $_POST['color']; var_dump($color);
if(empty($color) || empty($button_text)) {
echo " Could not create image - form not filled correctly";
exit;
}
$path = $DOCUMENT_ROOT."/uploads/$color-button.jpg";
$im = imagecreatefromjpeg ($path);
$width_image = imagesx($im);
$height_image = imagesy($im);
$width_image_wo_margins = $width_image-(2*18);
$height_image_wo_margins = $width_image-(2*18);
$font_size = 33;
putenv('GDFONTPATH=C:\Windows\Fonts');
$fontname = getenv('GDFONTPATH') . '\comic.ttf';
if(!is_file($fontname)) {
die( "Missing Font");
}
do {
$font_size--;
$bbox = imagettfbbox($font_size,0,$fontname,$button_text);
$right_text = $bbox[2];
$left_text = $bbox[0];
$width_text = $right_text -$left_text;
$height_text = abs($bbox[7] - $bbox[1]);
}
while($font_size > 8 && ( $height_text > $height_image_wo_margins || $width_text > $width_image_wo_margins));
if ( $height_text > $height_image_wo_margins || $width_text > $width_image_wo_margins) {
echo "Text given wil not fit on button.<br />";
} else {
$text_y = $width_image/2.0 - $width_text/2.0;
$text_x = $height_image/2.0 - $height_text/2.0;
if($left_text < 0) {
$text_x += abs($left_text); //add factor for left overhang.
}
$above_line_text = abs($bbox[7]);
$text_y += $above_line_text;
$text_y -=2;
$white = imagecolorallocate($im,255,255,255);
imagettftext($im, $font_size, 0, $text_x, $text_y, $white, $fontname, $button_text);
imagejpeg($im, NULL,75);
}
imagedestroy($im);
?>发布于 2012-12-16 11:49:00
您的问题是var_dump语句。
这就是将文本发送到输出。imagejpeg()调用可能可以很好地创建图像,但它不会使用var_dump语句呈现。
发布于 2012-12-16 10:58:19
它没有显示,因为您实际上没有执行任何操作来显示图像。当这个脚本创建一个图像时,您需要另一个脚本来实际调用它,就像在普通HTML中一样。
这个话题之前已经在SO上讨论过了:PHP GD Library: Output an image and text on same page。
我还建议您完成一两个教程。如果你快速搜索一下,有几十个可用的。我不会在这里发表任何文章,冒着把这篇文章变成"20个伟大的GD教程“的风险。
发布于 2012-12-16 11:04:23
在使用对我有效的header('Content-Type: image/jpeg')时删除echo语句
https://stackoverflow.com/questions/13898186
复制相似问题