Hacking with PHP has been updated for PHP 7 - click here! >>


Here's the first draft of our code. You will (obviously) need the GD library installed and be familiar with GD functions in order to understand what's going on:

    $image = imagecreatefromjpeg("tux.jpg");
    if ($image) {
        echo '<pre style="font: 1px/1px Courier New;">';
        $asciichars = array("@", "#", "+", "*", ";", ":", ",", ".", "`", " ");
        $width = imagesx($image);
        $height = imagesy($image);

        for($y = 0; $y < $height; ++$y) {
            for($x = 0; $x < $width; ++$x) {
                $thiscol = imagecolorat($image, $x, $y);
                $rgb = imagecolorsforindex($image, $thiscol);
                $brightness = $rgb['red'] + $rgb['green'] + $rgb['blue'];
                $brightness = round($brightness / 85);
                $char = $asciichars[$brightness];
                echo $char;
            echo "\n";
        echo '</pre>';

If you put your own picture in there in place of tux.jpg, and make sure you give it enough time to run (it's quite an intensive task). With a 1-pixel font, the symbols should come out exceedingly small and so make the picture look very good indeed!


If this was helpful, please take a moment to tell others about Hacking with PHP by tweeting about it!

Next chapter: Analysis: ASCII art in colour >>

Previous chapter: Analysis

Jump to:


Home: Table of Contents

Copyright ©2015 Paul Hudson. Follow me: @twostraws.