Skip to content

Instantly share code, notes, and snippets.

@donatj
Created November 9, 2011 22:00
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 10 You must be signed in to fork a gist
  • Save donatj/1353237 to your computer and use it in GitHub Desktop.
Save donatj/1353237 to your computer and use it in GitHub Desktop.
Damn Simple PHP Ascii Art Generator
#!/usr/bin/php -q
<?php
if(isset($argv[1]) && strlen($argv[1])) {
$file = $argv[1];
}else{
echo 'Please Specify a File';
exit(1);
}
$img = imagecreatefromstring(file_get_contents($file));
list($width, $height) = getimagesize($file);
$scale = 10;
$chars = array(
' ', '\'', '.', ':',
'|', 'T', 'X', '0',
'#',
);
$chars = array_reverse($chars);
$c_count = count($chars);
for($y = 0; $y <= $height - $scale - 1; $y += $scale) {
for($x = 0; $x <= $width - ($scale / 2) - 1; $x += ($scale / 2)) {
$rgb = imagecolorat($img, $x, $y);
$r = (($rgb >> 16) & 0xFF);
$g = (($rgb >> 8) & 0xFF);
$b = ($rgb & 0xFF);
$sat = ($r + $g + $b) / (255 * 3);
echo $chars[ (int)( $sat * ($c_count - 1) ) ];
}
echo PHP_EOL;
}
@donatj
Copy link
Author

donatj commented Dec 3, 2013

Its declared as an array rather than a string to allow me to use multibyte characters more easily, I'm not here but I had experimented with it.

As for the array_reverse, its simply so its easier for my brain to wrap it self around, starting at lightest and going to darkest. That is all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment