如何在网页中嵌入图形(jpgraph)

时间:2011-09-06 17:46:27

标签: php jpgraph

我正在使用this脚本,这是jpgraph本身提供的示例之一。当我把它放在一个网页(空白)上时,它正在绘制图形。但是当我将代码嵌入已经存在的网页(包含一些内容)时,它并没有绘制图形。

GD已根据phpinfo()启用。我使用的是jpgraph 3.5.0b1。

6 个答案:

答案 0 :(得分:11)

问题是您正在混合HTML /文本输出和图像输出。

每当您有PHP脚本生成图形内容时,您必须以不同于普通HTML或文本的方式处理输出。

有几条路线,我会在这里简要介绍一下。

将输出保存到文件并在HTML中使用该文件名

//replace this line:
// Display the graph
//$graph->Stroke();

// with these lines:

    // Default is PNG so use ".png" as suffix
    $fileName = "/tmp/imagefile.png";
    $graph->img->Stream($fileName);

..然后在图片标记中使用$filename,例如:

print '<img src="'.$filename.'" />';

创建一个独立的PHP脚本,输出图形

您可以单独在名为graph_render_script.php的文件中使用示例脚本。然后,在HTML中,您将该脚本用作源:

<img src="graph_render_script.php" />

输出base-64编码数据

另一种途径是使用base-64编码的图像数据。这样做比较简单:

print '<img src="data:image/png;base64,'.base64_encode($graph->Stroke()).'" />';

与往常一样,文档应该是您的指南!

<强>文档

答案 1 :(得分:4)

这对我有用:

将生成图像的php代码放在文件中......然后在我的html页面上执行此操作:

<img src="graph.php" > 

答案 2 :(得分:3)

确实可以嵌入图表。您必须使用输出缓冲来捕获图像数据,然后base64对该数据进行编码,然后使用该base64编码的字符串作为<img>中的源。

尝试这样的事情:

$img = $graph->Stroke(_IMG_HANDLER);

ob_start();
imagepng($img);
$imageData = ob_get_contents();
ob_end_clean();

?><html>
<head>
    <title>JpGraph Inline Image Example</title>
</head>
<body>
    <h1>JpGraph Inline Image Example</h1>
    <img src="data:image/png;base64,<?php echo(base64_encode($imageData)); ?>" />
</body>
</html>

ceejayoz提出了一个很好的观点,即这种方法几乎不是你想要的。我不建议像这样嵌入图像数据,除非你有充分的理由这样做并理解缺点,即旧浏览器不支持它,并且页面大小显着增加(不仅来自图像数据,而且事实上图像数据是base64编码的,其长度为气球。我去年在一个项目中使用过这种方法,但这只是因为客户拒绝再次请求图像。

答案 3 :(得分:1)

  

但是当我将代码嵌入现有的网页(包含一些内容)时,它并没有绘制图形。

您不能这样做 - 您无法在页面中输出图像作为原始二进制数据。

您需要将生成图表的代码放在单独的文件中,并使用图片标记。

<img src="path/to/jpgraph/chart.php" />

答案 4 :(得分:1)

图表需要位于自己的页面上,您无法嵌入它。它输出一个原始JPG,你需要没有其他内容发送,并有适当的标题告诉浏览器它是一个JPG。要嵌入图表,您可以创建一个名为stats.php的不同页面,并在该页面上创建一个指向独立图形的图像标记。

<img src=graph.php>

答案 5 :(得分:0)

我已多次遇到此问题,我发现当您的图表脚本中有require()include()并且这些脚本具有数据库时,会发生这种情况连接或特殊配置。

我已经解决了将数据检索和图表绘图分开,将参数传递给脚本或使用SESSIONS获取值的问题。

在PHP或HTML文件中嵌入图像图表的示例:

<img src="linear_graph_customer.php?values=1,2,3,4|1,2,3,4|1,2,3,4&title=CHART&width=500&height=300" width="500" height="300" class="img" />

问候。