有一个画图的函数,是别人写的,叫photo.php。代码应该是没有问题的。因为之前已经测试成功了。是可以画图的。不管有没有参数,都可以输出一个图。(没有参数输出的是一个图上面写“没有参数”)现在 我在自己的PHP里面引用这个脚本。但是输出的是一个叉。我引用时候写的代码如下所示:if($SelectType == "photo")
{
echo "<img src='photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation' >";}后面那一串都是参数。这个画图的函数,咱们不管怎么画的,不管他的逻辑
他最后是这么写的//设定文件头
header('Content-type: image/png');
//输出图像
imagepng($img);
//释放资源
imagedestroy($img);
这个释放资源,有问题吗?请问这是怎么回事??
为什么会输出一个叉,而不是一个图呢?
{
echo "<img src='photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation' >";}后面那一串都是参数。这个画图的函数,咱们不管怎么画的,不管他的逻辑
他最后是这么写的//设定文件头
header('Content-type: image/png');
//输出图像
imagepng($img);
//释放资源
imagedestroy($img);
这个释放资源,有问题吗?请问这是怎么回事??
为什么会输出一个叉,而不是一个图呢?
if($SelectType == "photo")
{
echo "<img src='http://****/photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation' >";}
参数对不对??
主要是这两个
直接在浏览器里运行:
photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation
还不行那就得看photo.php源码了。
copy的方法也试过了,还是看不了。我有源码。贴出来,麻烦您给看看?
谢谢了!!!
<?php
include_once("./common/config.php");
include_once("./common/CommonFunc.php");
// 绘图函数
function ChangeMinutes($UNIXseconds,$StartSeconds)
{ if($UNIXseconds<$StartSeconds)
{
return 1;
}
$TotalMinutes = ceil(($UNIXseconds - $StartSeconds)/60);
return $TotalMinutes;
}
//////////查询记录//////////////////////////////////////////////////
//接收输入的时间参数数据
$AirPortID1 = $_GET["AirPortID1"];//机场代码1
$AirPortID2 = $_GET["AirPortID2"];//机场代码2
$AirPortID3 = $_GET["AirPortID3"];//机场代码3
$AirPortID4 = $_GET["AirPortID4"];//机场代码4
$AirPortID5 = $_GET["AirPortID5"];//机场代码5
$Elevation = $_GET["Elevation"]; //仰角
$CurrentTime = mktime(date("H")-8,date("i"),date("s"),date("m"),date("d"),date("Y")); //当前UTC时间
$ForecastDayNum = 3; //预测3天的数据
//读取数据库
$db = new gnss_db();
$SQL = "Select MAX(tResultStart) AS StartTime from NPAResultCurrent ";
$db->query($SQL);
$RecordCountData = 0 ; //初始化查询记录数
$RecordCountData = $db->num_rows(); //得到的记录数
if($RecordCountData>0)
{
While($db->next_record())
{
$CurrentTime = Standard_SQLTimeFormat($db->f("StartTime"));
}
}
$db->free_result();$ForecasetStartTime = mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime),date("Y",$CurrentTime));
$ForecasetEndTime = mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+3,date("Y",$CurrentTime));
$strForecastST = date('Y-m-d H:i:s',$ForecasetStartTime);
$strForecastET = date('Y-m-d H:i:s',$ForecasetEndTime);//预测时间间隔
$ForecastTime[] = date('d/m H:i',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime),date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(12,0,0,date("m",$CurrentTime),date("d",$CurrentTime),date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+1,date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(12,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+1,date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+2,date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(12,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+2,date("Y",$CurrentTime)));
$ForecastTime[] = date('d/m H:i',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+3,date("Y",$CurrentTime)));
if($AirPortID1 != '0')
{
$AirPortArr[] = $AirPortID1;
}
if($AirPortID2 != '0')
{
$AirPortArr[] = $AirPortID2;
}
if($AirPortID3 != '0')
{
$AirPortArr[] = $AirPortID3;
}
if($AirPortID4 != '0')
{
$AirPortArr[] = $AirPortID4;
}
if($AirPortID5 != '0')
{
$AirPortArr[] = $AirPortID5;
}
$AirPortNum = count($AirPortArr); //预测的机场数
//初始化文本数据
$strVarNanu = "";
$strVarAlmWeek = "";
$strVarAlmTOA = "";
$strtGenerate = "";
if($AirPortNum > 0)
{ for($i=0;$i<$AirPortNum;$i++)
{
$SQL = "Select * from NPAResultCurrent where (VarCode = '$AirPortArr[$i]' and iElevation='$Elevation' and tResultStart='$strForecastST') order by tStart";
$db->query($SQL);
$RecordCount = 0 ; //初始化查询记录数
$RecordCount = $db->num_rows();//得到的记录数
if($RecordCount>0)
{
$j = 0;
While($db->next_record())
{
$DataArr[$i][$j] = array( "VarCode"=>$db->f("VarCode"),//机场四字代码
"tGenerate"=>Standard_SQLTimeFormat($db->f("tGenerate")),//结果生成时间
"VarNanu" =>$db->f("VarNanu"),//活动的Nanu
"VarAlmWeek" =>$db->f("VarAlmWeek"),//使用历书的周
"VarAlmTOA" =>$db->f("VarAlmTOA"),//使用历书的基准时间(秒)
"tResultStart" =>Standard_SQLTimeFormat($db->f("tResultStart")),//结果起始时间,用于显示,结果起始时间+72小时为结果结束时间
"iElevation" =>$db->f("iElevation"),//仰角0:5度;1:7.5度;2:10度
"iState" =>$db->f("iState"),//预测结果 0-RAIM可用;1-RAIM不可用
"tStart" =>Standard_SQLTimeFormat($db->f("tStart")),//状态开始时间
"tEnd" =>Standard_SQLTimeFormat($db->f("tEnd")),//状态结束时间
);
$strVarNanu = $db->f("VarNanu");
$strVarAlmWeek = $db->f("VarAlmWeek");
$strVarAlmTOA = $db->f("VarAlmTOA");
$strtGenerate = $db->f("tGenerate"); $j++;
}
}
$db->free_result();
}
}
///////绘图开始/////////////////////////////////////////////////////////
$Width = "555"; //图像宽度
$Height = "600"; //图像高度
$LeftWidth = "32"; //左侧预留宽度
$RightWidth = "35"; //右侧预留宽度
$TopWidth ="130"; //上部预留宽度
$BottomWidth ="60"; //底部预留宽度
$ScaleLength = "5"; //刻度线长度
$TopTiTleHeight = "30"; //上部标题栏高度〈 $TopWidth
$BottomTitleHeight = "30";//底部标题栏高度〈 $BottomWidth
//创建画布
$img = @imagecreate($Width,$Height)
or die("Cannot Initialize new GD image stream");//颜色预定义
$bgColor = ImageColorAllocate($img,0xEE, 0xEE, 0xEE); //灰色背景
$AxisColor = ImageColorAllocate($img,0,0,0); //坐标轴颜色
$BlackColor = ImageColorAllocate($img,0,0,0); //黑色
$RedColor = ImageColorAllocate($img,255,0,0); //红色
$BlueColor = ImageColorAllocate($img,0,0,255);//蓝色
$YellowColor = ImageColorAllocate($img,240,240,0);//黄色
$GreenColor = ImageColorAllocate($img,0,222,0);//绿色
$WhiteColor = ImageColorAllocate($img,255,255,255);//白色
$OrangeColor = ImageColorAllocate($img,255,100,0);//橙色
$BorderColor = ImageColorAllocate($img,0,127,0);//边框绿色
$GridColor = ImageColorAllocate($img,235,235,235);//栅格灰色//字体定义
$FontType_simsun = "./fonts/simsun.ttc"; //字体类型"simsun.ttc"
$FontType_simfang = "./fonts/simfang.ttf";//字体类型"simfang.ttf"//刻度间距
$Y_ScaleNum = "10"; //刻度总数
$Y_Space = floor(($Height - $TopWidth -$BottomWidth )/$Y_ScaleNum); //Y轴坐标间隔
$X_ScaleNum = "6";//刻度总数
$X_Space = floor(($Width - $RightWidth- $LeftWidth )/$X_ScaleNum);//X轴坐标刻度//计算坐标原点的坐标
$AxisX = $LeftWidth;//原点X轴坐标
$AxisY = $Height - $BottomWidth;//原点Y轴坐标//填充画布边框
imageRectangle($img,0,0,$Width-1,$Height-1,$BorderColor);
//填充绘图区背景
imageFilledRectangle($img,$AxisX,$TopWidth ,$Width - $RightWidth,$AxisY,$WhiteColor);
//绘制标题栏分割线
imageLine($img,0,$TopTiTleHeight,$Width,$TopTiTleHeight,$BorderColor);
imageLine($img,0,$Height-$BottomTitleHeight,$Width,$Height - $BottomTitleHeight,$BorderColor);//绘制坐标轴框架
//轴
imageline($img,$AxisX,$AxisY,$AxisX,$TopWidth,$AxisColor);
imageline($img,$AxisX,$AxisY,$Width - $RightWidth ,$AxisY,$AxisColor);
//绘制Y轴样式
$FontSize = 3;
for($i=0;$i<$Y_ScaleNum;$i++)
{
//栅格
imageLine($img,$AxisX,$AxisY - $Y_Space*($i+1),$Width - $RightWidth,$AxisY - $Y_Space*($i+1),$GridColor);
//刻度
imageLine($img,$AxisX,$AxisY - $Y_Space*($i+1),$AxisX + $ScaleLength,$AxisY - $Y_Space*($i+1),$AxisColor);
//标注
}
//添加机场名称
for( $i=0;$i<$AirPortNum;$i++)
{
imageString($img,
$FontSize,
$AxisX - ImageFontHeight($FontSize)/2 - 21,
//$AxisY - 2*$Y_Space*($i+1) - ImageFontHeight($FontSize)/2 + 13 ,
$AxisY - (2*($i+1)*$Y_Space) + $Y_Space/2 - ImageFontHeight($FontSize)/2,
$AirPortArr[$i],
$BlueColor);
}
//绘制X轴样式
$FontSize = 2;
for($i=0;$i<$X_ScaleNum;$i++)
{
//栅格
//imageLine($img,$AxisX,$AxisY - $Y_Space*($i+1),$Width - //$RightWidth,$AxisY - $Y_Space*($i+1),$GridColor);
//刻度
imageLine($img,$AxisX + $X_Space*($i+1),$AxisY,$AxisX + $X_Space*($i+1),$AxisY - $ScaleLength,$AxisColor);
}
//标注时间刻度
for($i=0;$i<7;$i++)
{
imageString($img,
$FontSize,
$AxisX + $X_Space*$i - 28 ,
$AxisY + 2 ,
$ForecastTime[$i],
$BlackColor); }//添加文字标注
//Y轴标注
$str = iconv("GB2312","UTF-8","(机场代码)");
ImageTTFText($img,
9,
0,
$LeftWidth - 30,
$TopWidth - 3,
$BlackColor,
$FontType_simfang,
$str);
//X轴标注
$str = iconv("GB2312","UTF-8","(时间)");
ImageTTFText($img,
9,
0,
$Width - $RightWidth - 1,
$Height - $BottomWidth -3,
$BlackColor,
$FontType_simfang,
$str);
imageString($img,
3,
$Width - $RightWidth ,
$AxisY + 15,
"(UTC)",
$BlackColor);
//添加标题
//上部
$str = iconv("GB2312","UTF-8","NPA预测结果示意图");
$FontSize = 15;//字体大小
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
$StrWidth = $ArraySize[2] - $ArraySize[0];
$StrHeight = $ArraySize[1] - $ArraySize[7];
ImageTTFText($img,
$FontSize,
0,
$Width/2 - $StrWidth/2,
$StrHeight + 1,
$BlackColor,
$FontType_simsun,
$str);
//底部
//背景框
imageFilledRectangle($img,20,$Height-$BottomTitleHeight+5,225,$Height-5,$WhiteColor);
imageRectangle($img,20,$Height-$BottomTitleHeight+5,225,$Height-5,$BlackColor);
$Coordinate = array(20,$Height-5); $FontSize = 9;//字体大小
imageFilledRectangle($img,
$Coordinate[0] + 15,
$Coordinate[1] - 14,
$Coordinate[0] + 15 + 8,
$Coordinate[1] - 6,
$GreenColor
);
$str = iconv("GB2312","UTF-8","RAIM 可用");
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
ImageTTFText($img,
$FontSize,
0,
$Coordinate[0] + 15 + 10 + 5,
$Coordinate[1] - 10 + 4 ,
$BlackColor,
$FontType_simsun,
$str);
//Line 2
imageFilledRectangle($img,
$Coordinate[0] + 115,
$Coordinate[1] - 14,
$Coordinate[0] + 123,
$Coordinate[1] - 6,
$RedColor
);
$str = iconv("GB2312","UTF-8","RAIM 不可用");
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
ImageTTFText($img,
$FontSize,
0,
$Coordinate[0] + 130,
$Coordinate[1] - 6 ,
$BlackColor,
$FontType_simsun,
$str);
// $strForecastTime = date('Y-m-d H:i:s' , $CurrentTime);
$strTmp = "预测时间:".$strtGenerate." UTC";
$str = iconv("GB2312","UTF-8",$strTmp);
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
$StrWidth = $ArraySize[2] - $ArraySize[0];
$StrHeight = $ArraySize[1] - $ArraySize[7];
ImageTTFText($img,
$FontSize,
0,
$Width - $StrWidth - $RightWidth + 20,
$Coordinate[1] - 6 ,
$BlackColor,
$FontType_simsun,
$str);
$FontSize = 9;//字体大小
$strTemp = "预测起始时间: ".date('Y-m-d H:i:s',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime),date("Y",$CurrentTime)))." UTC";
$str1 = iconv("GB2312","UTF-8",$strTemp);
$StartPosY = 50;
ImageTTFText($img,
$FontSize,
0,
$AxisX,
$StartPosY ,
$BlackColor,
$FontType_simsun,
$str1);$strTemp = "预测结束时间: ".date('Y-m-d H:i:s',mktime(0,0,0,date("m",$CurrentTime),date("d",$CurrentTime)+3,date("Y",$CurrentTime)))." UTC";
$str2 = iconv("GB2312","UTF-8",$strTemp);
ImageTTFText($img,
$FontSize,
0,
$AxisX + 280,
$StartPosY ,
$BlackColor,
$FontType_simsun,
$str2);
if($Elevation == 0) //仰角0:5度;1:7.5度;2:10度
{
$ElevationTrue = 5.0;
}
else if($Elevation == 1)
{
$ElevationTrue = 7.5;
}
else if($Elevation == 2)
{
$ElevationTrue = 10.0;
}
$strTemp = "预测仰角: ".$ElevationTrue."度";
$str3 = iconv("GB2312","UTF-8",$strTemp);
ImageTTFText($img,
$FontSize,
0,
$AxisX,
$StartPosY+20 ,
$BlackColor,
$FontType_simsun,
$str3);
$strTemp = "NANUS报: ".$strVarNanu;
$str4 = iconv("GB2312","UTF-8",$strTemp);
ImageTTFText($img,
$FontSize,
0,
$AxisX,
$StartPosY+40 ,
$BlackColor,
$FontType_simsun,
$str4);
$strTemp = "历书 周: ".$strVarAlmWeek." 周内秒: ".$strVarAlmTOA;
$str5 = iconv("GB2312","UTF-8",$strTemp);
ImageTTFText($img,
$FontSize,
0,
$AxisX,
$StartPosY+60 ,
$BlackColor,
$FontType_simsun,
$str5);////////////////////////////////////////////////////////////
//绘制统计量$X_AxisCount = $X_Space * $X_ScaleNum; //X轴的像素数
$Y_AxisCount = $Y_Space * $Y_ScaleNum; //Y轴的像素数
$AllMintutes = 24*60*3; //三天的总分钟数
for($Ynum=0;$Ynum<$AirPortNum;$Ynum++)
{
$ShowTemp = 0; //交错显示时间跨度的标志
$RecordCount = count($DataArr[$Ynum]);
if( $RecordCount > 0)
{
for($i=0;$i<$RecordCount;$i++)
{
$StartTime = ChangeMinutes($DataArr[$Ynum][$i]["tStart"],$ForecasetStartTime);
$EndTime = ChangeMinutes($DataArr[$Ynum][$i]["tEnd"],$ForecasetStartTime);
$State = $DataArr[$Ynum][$i]["iState"];
//绘制区域
if($State == 0) // 0:可用
{
imageFilledRectangle($img,
$AxisX + $X_AxisCount/$AllMintutes*$StartTime ,
$AxisY - (2*($Ynum+1)*$Y_Space) +1,
$AxisX + $X_AxisCount/$AllMintutes*$EndTime,
$AxisY - ((2*($Ynum+1)-1)*$Y_Space) -1,
$GreenColor
);
}
else if( $State == 1)// 1:不可用
{
imageFilledRectangle($img,
$AxisX + $X_AxisCount/$AllMintutes*$StartTime ,
$AxisY - (2*($Ynum+1)*$Y_Space) +1,
$AxisX + $X_AxisCount/$AllMintutes*$EndTime,
$AxisY - ((2*($Ynum+1)-1)*$Y_Space) -1,
$RedColor
);
}
//描述时间持续长度
/* if(($EndTime - $StartTime) <= 60)
{
$strTimeSpan = ($EndTime - $StartTime)."分钟";
}
else
{
$strTimeSpan = floor(($EndTime - $StartTime)/60)."小时".(($EndTime-$StartTime)%60)."分";
}
$str = iconv("GB2312","UTF-8",$strTimeSpan);
$FontSize = 8;//字体大小
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
$StrWidth = $ArraySize[2] - $ArraySize[0];
$StrHeight = $ArraySize[1] - $ArraySize[7];
if($State == 0) // 0:可用
{
$ShowColor = $BlackColor;
}
else if( $State == 1)// 1:不可用
{
$ShowColor = $RedColor;
}
ImageTTFText( $img,
$FontSize,
0,
$AxisX + ($X_AxisCount/$AllMintutes*$StartTime+$X_AxisCount/$AllMintutes*$EndTime)/2 - $StrWidth/2,
$AxisY - ((2*($Ynum+1)-1)*$Y_Space) +8 + $ShowTemp*10,
$ShowColor,
$FontType_simsun,
$str);
if($ShowTemp == 1)
{
$ShowTemp = 0;
}
else if($ShowTemp == 0)
{
$ShowTemp = 1;
}
*/
}
}
else //查询结果为空
{
imageFilledRectangle($img,
$AxisX + 15 ,
$AxisY - (2*($Ynum+1)*$Y_Space) + $Y_Space/2 - 15,
$AxisX + 173,
$AxisY - (2*($Ynum+1)*$Y_Space) + $Y_Space/2 + 15 ,
$WhiteColor);
imageRectangle($img,
$AxisX + 15 ,
$AxisY - (2*($Ynum+1)*$Y_Space) + $Y_Space/2 - 15,
$AxisX + 173 ,
$AxisY - (2*($Ynum+1)*$Y_Space) + $Y_Space/2 + 15,
$BlackColor);
$FontSize = 10;
$str = iconv("GB2312","UTF-8","无相应时段的预测结果");
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
$StrWidth = $ArraySize[2] - $ArraySize[0];
$StrHeight = $ArraySize[1] - $ArraySize[7];
ImageTTFText($img,
$FontSize,
0,
$AxisX + 30 ,
$AxisY - (2*($Ynum+1)*$Y_Space) + $Y_Space/2 + $StrHeight/2,
$BlackColor,
$FontType_simsun,
$str);
}
}
if($AirPortNum == 0)
{
imageFilledRectangle($img,$Width/2-110,$Height/2 - 20,$Width/2+110,$Height/2 +20,$WhiteColor);
imageRectangle($img,$Width/2-110,$Height/2 - 20,$Width/2+110,$Height/2 +20,$BlackColor);
$FontSize = 12;
$str = iconv("GB2312","UTF-8","请选择需要预测的机场编号");
$ArraySize = imagettfbbox ( $FontSize, 0,$FontType_simsun , $str);
$StrWidth = $ArraySize[2] - $ArraySize[0];
$StrHeight = $ArraySize[1] - $ArraySize[7];
ImageTTFText($img,
$FontSize,
0,
$Width/2 - $StrWidth/2,
$Height/2 + $StrHeight/2,
$OrangeColor,
$FontType_simsun,
$str);
}
///////////////////////////////////////////////////////////
//设定文件头
header('Content-type: image/png');
//输出图像
imagepng($img);
//释放资源
imagedestroy($img);?>