2011-04-05 68 views
3

如何在我的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(); 
    } 
文件名

回答

4

最簡單的方法是將您的項目分成2個獨立的文件。一個文件保存您的網頁,另一個文件創建圖像(圖表)。讓我們命名第二個文件chart.php 正如你所提到的,它只輸出一個圖像。你需要做的是將這個文件嵌入到第一個包含網頁的文件中。

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

HTH,雷神

+0

謝謝我可以做到這一點問題是我生成的網頁也編譯到電子郵件和電子郵件不得有任何外部鏈接的圖像必須嵌入到電子郵件。現在我所做的是,如果它顯示給瀏覽器我使用圖像的base64,如果它發送到電子郵件我嵌入對象和使用cid。基本上我需要一種方法來獲得對象的形象。 – user391986 2011-04-05 20:01:38

+0

再次,如果您已經使用base64編碼版本的瀏覽器,它也會幫助您在電子郵件中。只需將base64編碼版本的圖像附加到電子郵件。大多數附件都是以base64編碼形式添加的。將附加圖像的文件名的標題添加到郵件中,並且可以在郵件內容中引用它。希望我得到了這個問題;) – Thor 2011-04-05 20:23:38

+0

嘿,對不起,我的意思是我有其他內容不與pChart生成,我使用基地64所以我試圖讓圖表作爲一個對象,所以我可以執行相同的基本64操作。請看4:32編輯 – user391986 2011-04-05 20:31:54

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調用。

+0

被警告,一些傳統的瀏覽器(當然IE6和可能的一些更高版本)不支持這一點。 – John 2014-01-03 14:50:50