pchart zend framework error «Невозможно отобразить изображение, так как оно содержит ошибки» - PullRequest
0 голосов
/ 27 апреля 2011

Я использую pchart для создания диаграмм для приложения Zend Framework .Моя проблема в том, что я не могу заставить приложение отображать диаграмму, поскольку каждый раз получаю вышеуказанную ошибку.Я посмотрел на различные решения, связанные с проблемой, но я до сих пор не работает.Есть что-нибудь, что здесь отсутствует?Пожалуйста, обратитесь к коду

{

    require 'pChart2.1.1/pChart2.1.1/class/pData.class.php'; 
    require 'pChart2.1.1/pChart2.1.1/class/pDraw.class.php';
    require 'pChart2.1.1/pChart2.1.1/class/pImage.class.php';
    require 'pChart2.1.1/pChart2.1.1/class/pPie.class.php';


   // action body
    $users = new Application_Model_DbTable_Users();
    $users = $users->listAll();

    $id=$this->_getParam('id');

    if($id)
    {
            $this->_helper->viewRenderer->setNoRender(true);
            $this->_helper->layout()->disableLayout();
            $response=$this->getResponse();
            $response->clearBody('top_menu');
            $response->clearAllHeaders();

    if ($id == 'pdf') {
                  }


        //request is a chart

        if($id=='chart')
        {
            ob_start();

            $departments=new Application_Model_DbTable_Departments();

            $departments=$departments->fetchAll();

            $departments->toArray();

            $department_id="";
            $department_name="";

            foreach ($departments as $departments) {
                $department_id[]=$departments['department_id'];
                $department_name[]=$departments['department_name'];



                /* pData object creation */
               $MyData = new pData();
                /* Data definition */
                $MyData->addPoints(array(20, 30, 25, 10), "Value");
                    /* Labels definition */
                $MyData->addPoints($department_name, "Legend");
                $MyData->setAbscissa("Legend");
                /* Create the pChart object */
                $myPicture = new pImage(500, 500, $MyData);
                /* Draw a gradient background */
                $myPicture->drawGradientArea(0, 0, 500, 500, 
                DIRECTION_HORIZONTAL, 
                array("StartR" => 220, "StartG" => 220, "StartB" => 220, 
                "EndR" => 180, "EndG" => 180, "EndB" => 180, "Alpha" => 100));
                /* Add a border to the picture */
                $myPicture->drawRectangle(0, 0, 400, 400, 
                array("R" => 0, "G" => 0, "B" => 0));
                /* Create the pPie object */
                $PieChart = new pPie($myPicture, $MyData);
                /* Enable shadow computing */
                $myPicture->setShadow(FALSE);
                /* Set the default font properties */
                $myPicture->setFontProperties(
                array(
                "FontName" => "pChart2.1.1/pChart2.1.1/fonts/Forgotte.ttf", 
                "FontSize" => 10, "R" => 80, "G" => 80, "B" => 80));
                /* Draw a splitted pie chart */
                $PieChart->draw3DPie(200, 150, 
                array("Radius" => 100, "DrawLabels" => TRUE, 
                "DataGapAngle" => 10, "DataGapRadius" => 6, "Border" => TRUE));
                /* Render the picture (choose the best way) */

                header ("Content-type: image/png" );
                $myPicture->Stroke("pie.png");

                exit;


            }


        }

}

Ответы [ 2 ]

0 голосов
/ 11 мая 2011

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

Спасибо всем!

0 голосов
/ 27 апреля 2011

Почти наверняка что-то выводится до или после содержимого изображения. Проще всего было бы временно закомментировать вашу строку header("Content-type: image/png"); и просмотреть изображение диаграммы в браузере. Вы увидите загрузку двоичных данных (изображение) - ищите что-либо до или после него, что выглядит неуместно (например, сообщение об ошибке PHP, немного HTML, возможно, пробел).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...