2

問題は、JpGraphが私のWebページに正しく表示されないことです。奇妙なことに、上記のコードを単独で実行すると、機能します。しかし、メインコードに挿入すると、上記のメッセージの生成に失敗します。PS私は'ob_start();'を使用していますが、問題は解決しません。

// A new graph with automatic size
$graph = new GanttGraph (0,0, "auto");

//  A new activity on row '0'
$activity = new GanttBar (0,"Project", "2001-12-21", "2002-02-20");
$graph->Add( $activity);

// Display the Gantt chart
$graph->Stroke();
?> 
</div>

JpGraph Error: HTTP headers have already been sent.
Caused by output from file index.php at line 85.
Explanation:
HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it's image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).

Most likely you have some text in your script before the call to Graph::Stroke(). If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser.

For example it is a common mistake to leave a blank line before the opening "<?php".
4

3 に答える 3

6

JpGraphsは、htmlを含むファイルには存在できません。それらは純粋なphpファイルに含まれている必要があります。これを回避するために、グラフを生成する別のファイルを作成し、すべてを関数にしました。最後に、変更します

$graph->Stroke();

$graph->Stroke(".<filepaht>.jpg");

次に、index.phpページで、画像ファイルを参照します。

だから、あなたが必要としているように見えるのは、

createjpgraph.php:

<?php 
function GenGraph (<input variables>) {

    // A new graph with automatic size        
    $graph = new GanttGraph (0,0, "auto");        

    //  A new activity on row '0'        
    $activity = new GanttBar (0,"Project", "2001-12-21", "2002-02-20");        
    $graph->Add( $activity);        

    // Display the Gantt chart        
    $graph->Stroke("./foler/file.jpg");
}
?> 

index.php:

...
<div>
...
<?php
include 'createjpgraph.php';
GenerateGraph(<variables>);
?>
<img src=\"./folder/file.jpg\" />
</div>

これがあなたのために働くことを願っています。

于 2012-05-10T20:09:43.300 に答える
1

同じhtmlドキュメントでそれを行うこともできます-最初にグラフをファイルに書き込み、次にそれを表示します...

//Code generating your graph here ...

// Finally output the image to a file
$graph->Stroke("/var/www/html/tmp/out.jpg");

//end of php code
?>

<!-- now include the newly generated image in the HTML -->
<img src="/tmp/out.jpg">

</body>
</html>

于 2015-01-23T07:06:50.490 に答える
0

私の場合、関数によって作成されているjpegファイルを上書きできないようです...

上書きするには..JPGraphファイルを変更しましたgd_image.inc.php..次の行をコメントアウトする必要がありますJpGraphError::RaiseL(25111,$aStrokeFileName)

于 2015-02-21T09:18:07.817 に答える