数据库是对的:
DATABASE `poll`; TABLE `results` CREATE TABLE `results` (
book_type VARCHAR(50),
num_votes INT
);
INSERT INTO `results` values
('Classic', 15),
('Fantasy', 7),
('Humor', 32),
('Mystery', 12),
('Poetry', 25);
代码
<?php
$dbhandle = mysql_connect("localhost","root","123") or die("unable to connect to mysql");
$selected = mysql_select_db("poll",$dbhandle);
$result = mysql_query("SELECT * FROM results");
$num_poller = mysql_num_rows($result);
$total_votes = 0;
while($row = mysql_fetch_array($result)){
$total_votes += $row{'num_votes'};
}
mysql_data_seek($result,0);
mysql_close($dbhandle);
putenv('GDFONTPATH=C:\WINDOWS\Fonts');
$font = 'arial';
$y = 50;
$width =700;
$bar_height =20;
$height = $num_poller * $bar_height *1.5 + 70;
$bar_unit = ($width - 400)/100;
$image = imagecreate($width,$height);
$white = imagecolorallocate($image,255,255,255);
$black = imagecolorallocate($image,0,0,0);
$red = imagecolorallocate($image,255,0,0);
$blue = imagecolorallocate($image,0,0,255);
imagefill($image,$width,$height,$white);
imagerectangle($image,0,0,$width-1,$height-1,$black);
imagettftext($image,16,0,$width/3+50,$y-20,$black,$font,'poll results');
while($row = mysql_fetch_object($result)){
if($total_votes > 0){
$percent = intval(round(($row->num_votes/$total_votes)*100));
}else{
$percent =0;
}
imagettftext($image,12,0,10, $y+($bar_height/2), $black, $font, $row->book_type);
//Output percentage for a particular value
imagettftext($image, 12, 0, 170, $y + ($bar_height/2),$red,$font,$percent.'%');
$bar_length = $percent * $bar_unit;
//Draw a shape that corresponds to 100%
imagerectangle($image, $bar_length+221, $y-2, (220+(100*$bar_unit)), $y+$bar_height, $black);
//Output a bar for a particular value
imagefilledrectangle($image,220,$y-2,220+$bar_length, $y+$bar_height, $blue);
//Output the number of votes
imagettftext($image, 12, 0, 250+100*$bar_unit, $y+($bar_height/2), $black, $font, $row->num_votes.' votes cast.');
$y = $y + ($bar_height * 1.5);
}
header("Content-Type: image/jpeg");
imagejpeg($image);
imagedestroy($image);
它显示错误:the image...cannot be displayed because it contains errors?
。代码有什么问题?谢谢。
答案 0 :(得分:0)
要了解您似乎遇到的实际错误,您需要打开注释中建议的@Wesley之类的error_reporting。 error_reporintg(-1);
然后以太查看您的php.error-log
或删除header("Content-Type: image/jpeg");
,以便在您启用display_errors
时在浏览器中收到错误。
通常您会收到“格式错误”错误,因为响应如下所示:
Warning: Some error.....
ZWW$%$%BINARY-IMAGE-STUFF
并且您的浏览器无法从该输出中获取正确的jpeg标头。