在页面上嵌入图表?

时间:2011-04-05 19:50:48

标签: php pchart

如何在HTML页面的特定位置获得pchart?现在,当我按照示例使用

$myPicture->autoOutput();

它只会覆盖我的整个页面,只显示图表。

查看我在pChart内找到的pImage.class.php来源相关功能

   function stroke()
    {
     if ( $this->TransparentBackground ) { imagealphablending($this->Picture,false); imagesavealpha($this->Picture,true); }

     header('Content-type: image/png');
     imagepng($this->Picture);
    }

我尝试将其更改为此但似乎返回null并且我收到了一堆关于

的错误
  

警告:imagettfbbox()[function.imagettfbbox]:**中的字体文件名无效

   function stroke()
    {   
    ob_start(NULL,4096);
    $this->Picture;
    header('Content-type: text/html');
    return base64_encode(ob_get_clean();  
    }

2 个答案:

答案 0 :(得分:4)

最简单的方法是将项目拆分为2个单独的文件。一个文件保存您的网页,另一个文件保存图像(图表)。我们将第二个文件命名为chart.php 正如您所提到的,它仅输出图像。您需要做的是将此文件嵌入到保存网页的第一个文件中。

在您的HTML代码中添加<img src="chart.php" width="x" height="y" />

HtH,Thor

答案 1 :(得分:2)

我得到了它的工作,我扩展了pImage类,所以我添加了以下函数:

function strokeToBase64()
{
   ob_start();
   imagepng($this->Picture);
   $contents =  ob_get_contents();
   ob_end_clean();
   return base64_encode($contents);
}

然后使用pChart lib的PHP代码调用这样的函数:

echo $myPicture->strokeToBase64();

通过这种方式,我可以在客户端使用jQuery轻松调用Ajax调用,而无需在服务器中创建图像文件,如上所述。