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!


Want to learn PHP 7?

Hacking with PHP has been fully updated for PHP 7, and is now available as a downloadable PDF. Get over 1200 pages of hands-on PHP learning today!

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.