I have this PHP program from http://www.hithlonde.com/pi/#files. The program is supposed to convert the numbers of pi into individual colors (One number per pixel) and save it to an image file like this image: http://www.hithlonde.com/pi/Pi1024x768.gif. But the output of my code is Binary in the debugging console. Kinda like this:
¡¢£¤¥¦§¨©ª«¬®¯
Here is the code:
<?php
//Title:
// Pi Graphical Visualization Script
//Date:
// 03.14.07
//Author:
// Tim Habersack
//Descript:
// Reads in the digits of pi, assigns a color to each number 0-9,
// then outputs to an image with one pixel representing a number.
//Notes:
// (http://www.hithlonde.com/pi/pi) is where I obtained the pi file,
// calculated to over 4 million decimal places. The GD library
// in your php config must be enabled for this to function.
//E-mail:
// tim@hithlonde.com
//Copyright:
// Released under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 License
function NumToColor($ImagePassed, $NumPassed)
{
$the0 = imagecolorallocate($ImagePassed, 0xFF, 0xFF, 0xFF);
$the1 = imagecolorallocate($ImagePassed, 0x00, 0xFF, 0xFF);
$the2 = imagecolorallocate($ImagePassed, 0x00, 0x00, 0xFF);
$the3 = imagecolorallocate($ImagePassed, 0xFF, 0x00, 0xFF);
$the4 = imagecolorallocate($ImagePassed, 0x00, 0xFF, 0x00);
$the5 = imagecolorallocate($ImagePassed, 0xFF, 0xA5, 0x00);
$the6 = imagecolorallocate($ImagePassed, 0xFF, 0x00, 0x00);
$the7 = imagecolorallocate($ImagePassed, 0xFF, 0xFF, 0x00);
$the8 = imagecolorallocate($ImagePassed, 0x80, 0x80, 0x80);
$the9 = imagecolorallocate($ImagePassed, 0x00, 0x00, 0x00);
switch ($NumPassed)
{
case 0:
return $the0;
break;
case 1:
return $the1;
break;
case 2:
return $the2;
break;
case 3:
return $the3;
break;
case 4:
return $the4;
break;
case 5:
return $the5;
break;
case 6:
return $the6;
break;
case 7:
return $the7;
break;
case 8:
return $the8;
break;
case 9:
return $the9;
break;
}
}
//Set the size of the pi image
$x = 300;
$y = 300;
$gd = imagecreatetruecolor($x, $y);
//Connect the pi file to variable
$theTestPi = file_get_contents("pi.txt");
$theGoodPi = "";
$PiWalker = 0;
//gets the # of digits needed, plus some extra for the \r dropped off, reads into var
while ($PiWalker < $x * $y * 1.1)
{
if ($theTestPi[$PiWalker] == "\r")
{
$PiWalker++;
}
else
{
$theGoodPi = $theGoodPi . $theTestPi[$PiWalker];
}
$PiWalker++;
}
$PiWalker = 0;
//walks through the image, painting the pi characters pixel by pixel
for ($theY = 0; $theY < $y; $theY++)
{
for ($theX = 0; $theX < $x; $theX++)
{
imagesetpixel($gd, $theX, $theY, NumToColor($gd, $theGoodPi[$PiWalker]));
$PiWalker++;
}
}
header('Content-Type: image/png');
imagepng($gd);
?>
I am using Netbeans IDE 8.0 Xampp compiler version 1.8.3-4 (PHP version 5.5.11).
Any help would be much appreciated.
1) Remove the single white space before the opening php tag.
2) There is no need to create "$theGoodPi", just use theTestPi, its just copying it anyway. It makes it take longer for nothing.
3)$theTestPi = file_get_contents("http://www.hithlonde.com/pi/pi");
You may not need to change 3
4)imagesetpixel($gd, $theX, $theY, NumToColor($gd, $theTestPi[$PiWalker]));
Change to theTestPi if you remove the while loop above (see 2)
All you really need to do is remove the single white space before the opening php tag though lol.