This PHP program demonstrates how to draw a graph of the parabola in the xy plane and save it as a png image file with the Graphics Draw, GD, library.
<!DOCTYPE html>
<html>
<head>
<title>XoaX.net PHP</title>
<h2>The Graph of y = x<sup>2</sup></h2>
</head>
<body>
<?php
$iGraphWidth = 400;
$iGraphHeight = 400;
$iCharWidth = ImageFontWidth(4);
$iCharHeight = ImageFontHeight(4);
$iGraphLeft = 100;
$iGraphTop = $iCharHeight;
$iGraphRight = $iGraphLeft + $iGraphWidth;
$iGraphBottom = $iGraphTop + $iGraphHeight;
$iImageWidth = $iGraphLeft + $iGraphWidth + 40;
$iImageHeight = $iGraphTop + $iGraphHeight + $iCharHeight * 1.5;
$iGraphIntervals = 100;
for($i = 0; $i <= $iGraphIntervals; $i++ ) {
$iaGraphX[$i] = $i;
$iaGraphY[$i] = $i * $i;
}
$iMinX = 0;
$iMinY = 0;
$iMaxX = 100;
$iMaxY = $iMaxX*$iMaxX;
$qImage = ImageCreate($iImageWidth, $iImageHeight);
$qBkgdColor = ImageColorAllocate($qImage, 245, 245, 245);
$qLabelColor = ImageColorAllocate($qImage, 200, 25, 100);
$qLightGray = ImageColorAllocate($qImage, 204, 204, 204);
$qGraphColor = ImageColorAllocate($qImage, 100, 245, 100);
$qDarkGray = ImageColorAllocate($qImage, 128, 128, 128);
ImageRectangle($qImage, 0, 0, $iImageWidth - 1, $iImageHeight - 1, $qDarkGray);
ImageRectangle($qImage, $iGraphLeft, $iGraphTop, $iGraphRight, $iGraphBottom, $qLightGray);
// Draw the data in the graph
$iPrevX = $iGraphLeft + ($iGraphWidth)*($iaGraphX[0]-$iMinX)/($iMaxX-$iMinX);
$iPrevY = $iGraphBottom - ($iGraphHeight)*($iaGraphY[0]-$iMinY)/($iMaxY-$iMinY);
for($i = 1; $i <= $iGraphIntervals; $i++ ) {
$iCurrX = $iGraphLeft + ($iGraphWidth)*($iaGraphX[$i]-$iMinX)/($iMaxX-$iMinX);
$iCurrY = $iGraphBottom - ($iGraphHeight)*($iaGraphY[$i]-$iMinY)/($iMaxY-$iMinY);
ImageLine($qImage, $iPrevX, $iPrevY, $iCurrX, $iCurrY, $qGraphColor);
$iPrevX = $iCurrX;
$iPrevY = $iCurrY;
}
// Print the graph bounds
$sMaxY = sprintf("%2.2f", $iMaxY);
ImageString($qImage, 4, $iGraphLeft - strlen($sMaxY) * $iCharWidth - 2, $iGraphTop - $iCharWidth, $sMaxY, $qDarkGray);
$sMinY = sprintf("%2.2f", $iMinY);
ImageString($qImage, 4, $iGraphLeft - strlen($sMinY) * $iCharWidth - 2, $iGraphBottom - $iCharHeight, $sMinY, $qDarkGray);
$sMinX = sprintf("%2.2f", $iMinX);
ImageString($qImage, 4, $iGraphLeft, $iGraphBottom + 2, $sMinX, $qDarkGray);
$sMaxX = sprintf("%2.2f", $iMaxX);
ImageString($qImage, 4, $iGraphRight - (strlen($sMaxX) * $iCharWidth) / 2, $iGraphBottom + 2, $sMaxX, $qDarkGray);
// Print the axis labels
$sLabelX = 'x-axis';
$sLabelY = 'y-axis';
ImageString($qImage, 4, $iGraphLeft + ($iGraphWidth)/2 - (strlen($sLabelX)*$iCharWidth)/2, $iGraphBottom, $sLabelX, $qLabelColor);
ImageString($qImage, 4, 3*$iCharWidth, ($iGraphHeight)/2, $sLabelY, $qLabelColor);
$sFilename = sprintf("Parabola.png");
// Save the png file
ImagePNG($qImage, $sFilename);
ImageDestroy($qImage);
?>
<img src="<?php echo $sFilename ?>" />
</body>
</html>
© 20072025 XoaX.net LLC. All rights reserved.