Вставить диаграмму на страницу? - PullRequest
3 голосов
/ 05 апреля 2011

Как я могу получить pchart в определенном месте на моей HTML-странице? прямо сейчас, когда я последую примеру и использую

$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);
    }

Я пытался изменить это на это, но, похоже, он возвращает ноль, и я получаю кучу ошибок о

Предупреждение: imagettfbbox () [function.imagettfbbox]: неверное имя файла шрифта в **

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

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Самый простой способ - разделить ваш проект на 2 отдельных файла.Один файл содержит вашу веб-страницу, а другой создает изображение (диаграмму).Назовем вторые файлы chart.php. Как вы упомянули, он выводит только изображение.Что вам нужно сделать, это вставить этот файл в первый файл, содержащий веб-страницу.

Добавить <img src="chart.php" width="x" height="y" /> в ваш HTML-код.

HtH, Thor

2 голосов
/ 16 августа 2013

У меня все получилось, я расширил класс pImage и добавил следующую функцию:

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

Тогда код PHP, который использует библиотеку pChart, вызывает функцию следующим образом:

echo $myPicture->strokeToBase64();

Таким образом, я могу легко вызывать Ajax-вызовы, используя jQuery на стороне клиента, без необходимости создавать файлы изображений на сервере, как упоминалось в приведенных выше публикациях.

...