有一个画图的函数,是别人写的,叫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);
这个释放资源,有问题吗?请问这是怎么回事??
为什么会输出一个叉,而不是一个图呢?

解决方案 »

  1.   

    你用全的url试试。
    if($SelectType == "photo")
    {
    echo "<img src='http://****/photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation' >";}
      

  2.   

    那个没有问题。路径对不对?
    参数对不对??
    主要是这两个
    直接在浏览器里运行:
    photo.php?AirPortID1=$AirPortID1&AirPortID2=$AirPortID2&AirPortID3=$AirPortID3&AirPortID4=$AirPortID4&AirPortID5=$AirPortID5&Elevation=$Elevation
      

  3.   

    右键点击叉图片-》属性,copy连接。放到新打开的ie里看看是否能显示。如果不能,调整参数。
    还不行那就得看photo.php源码了。
      

  4.   


    copy的方法也试过了,还是看不了。我有源码。贴出来,麻烦您给看看?
    谢谢了!!!
      

  5.   

    photo.php源码
    <?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();
    }
    }
      

  6.   

    接上文
    ///////绘图开始/////////////////////////////////////////////////////////
    $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);
      

  7.   

    接上文//显示NPA相关信息
    $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);?>
      

  8.   

    建议去掉图片生成页面的header信息,然后直接调用这个程序,看看每一步的输出状况。