Search code examples
phppchart

Render image with pChart


I am trying to send an image via the pChart 2.1.4 libary via mail. The library is used within my wordpress plugin.

I tried the following:

/* Create and populate the pData object */ 
$MyData = new pData();   
for($i=0;$i<=30;$i++) { $MyData->addPoints(rand(1,15),"Probe 1"); } 
$MyData->setSerieTicks("Probe 2",4); 
$MyData->setAxisName(0,"Temperatures"); 

/* Create the pChart object */ 
$myPicture = new pImage(700,230,$MyData); 

/* Turn of Antialiasing */ 
$myPicture->Antialias = FALSE; 

/* Add a border to the picture */ 
$myPicture->drawRectangle(0,0,699,229,array("R"=>0,"G"=>0,"B"=>0)); 

/* Define the chart area */ 
$myPicture->setGraphArea(60,40,650,200); 

/* Draw the scale */ 
$scaleSettings = array("XMargin"=>10,"YMargin"=>10,"Floating"=>TRUE,"GridR"=>200,"GridG"=>200,"GridB"=>200, "DrawSubTicks"=>TRUE,"CycleBackground"=>TRUE); 
$myPicture->drawScale($scaleSettings); 

/* Write the chart legend */ 
$myPicture->drawLegend(600,20,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL)); 

/* Turn on Antialiasing */ 
$myPicture->Antialias = TRUE; 

/* Enable shadow computing */ 
$myPicture->setShadow(TRUE,array("X"=>1,"Y"=>1,"R"=>0,"G"=>0,"B"=>0,"Alpha"=>10)); 

/* Draw the area chart */ 
$Threshold = ""; 
$Threshold[] = array("Min"=>0,"Max"=>5,"R"=>207,"G"=>240,"B"=>20,"Alpha"=>70); 
$Threshold[] = array("Min"=>5,"Max"=>10,"R"=>240,"G"=>232,"B"=>20,"Alpha"=>70); 
$Threshold[] = array("Min"=>10,"Max"=>20,"R"=>240,"G"=>191,"B"=>20,"Alpha"=>70); 
$myPicture->drawAreaChart(array("Threshold"=>$Threshold)); 

/* Render the picture (choose the best way) */ 
$today = date("Ymd");
$curr_user = wp_get_current_user();
$img_name = $today . $curr_user->user_login . ".png";
$myPicture->render($img_name); 

//#############################################################

    //create mail
    $message.=<<<HTML
        <tr valign="top" align="center">

            <img src='$img_name'>

        </tr>
        <tr>
            <td width="25%" style="width:25%;" valign="top" align="center">
HTML;

The image is rendered like the following:

<img src="https://ci6.googleusercontent.com/proxy/3y_3IDPObyXLCMINb1aKlZf3gh3yI9X3Co3OVv08MohNWIgv4eTR3bWw3KkcLQ=s0-d-e1-ft#http://20160727admin.png" class="CToWUd">

However, in the mail see the following displayed:

enter image description here

Any suggestions what I am doing wrong?

Where is the image saved?

I appreciate your reply!


Solution

  • I know it is a bit late, but it will help others, doing the same mistake.

    The OP is using

     <img src='$img_name'>
    

    That must be

    <img src="$img_name">
    

    Otherwise, it will place $img_name in img src, instead of value of $img_name; Plus, make sure image exist on that location.