PHP Classes

Pixeler: Render images as UTF-8 text characters

Recommend this page to a friend!
  Info   View files Example   Screenshots Screenshots   View files View files (8)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 169 This week: 1All time: 8,846 This week: 571Up
Version License PHP version Categories
pixeler 1.0.1MIT/X Consortium ...5.4PHP 5, Graphics, Text processing, Con...
Description 

Author

This package can render images as UTF-8 text characters.

It can take a given image file and renders its pixels as a grid of text characters to be displayed in a text console eventually using ANSI color character controls.

The dither mode, the dither threshold values, and image scale are configurable parameters.

Picture of Stefano Azzolini
  Performance   Level  
Name: Stefano Azzolini <contact>
Classes: 3 packages by
Country: Italy Italy
Age: 43
All time rank: 3886158 in Italy Italy
Week rank: 420 Up17 in Italy Italy Up
Innovation award
Innovation award
Nominee: 2x

Example

#!/usr/bin/env php
<?php

// Include autoloader
require __DIR__.'/../vendor/autoload.php';

// Parse options from command line
$opts = array_merge([
   
'd' => 1, // Dithering mode : 0 = DITHER_NONE, 1 = DITHER_ERROR
   
'f' => false,
   
'r' => 1.0, // Resize factor 1.0 = 100%
   
'w' => 0.75, // Dither treshold weight
], getopt("f:r:w:d:ib"));

// An image file/url is required.
$opts['f'] || die("Must specify an image file.\n");

// The -i option inverts the image
$image = Pixeler\Pixeler::image($opts['f'], $opts['r'], isset($opts['i']), $opts['w'], $opts['d']);

// No colors if "-b" is passed
isset($opts['b']) && $image->clearColors();

// The Pixeler\Image instance render itself if casted to a string
echo $image;


Details

Pixeler

Gitter

Render images in CLI with UTF-8 characters.

Scrutinizer Code Quality Total Downloads Latest Stable Version Latest Unstable Version License

<img src="http://f.cl.ly/items/3P212W0G0S0m0s1d3w1r/code.gif" width="700" />

Installation

Require in your project with composer :

$ composer require lastguest/pixeler

This will also install a pixeler tool in :

your_project_dir/vendor/bin/pixeler

It works exactly like the example below.

Example

Create a file pixel.php :

<?php

// Include autoloader
include __DIR__."/vendor/autoload.php";

// Parse options from command line
$opts = array_merge([
    'd' => 1,    // Dithering mode : 0 = DITHER_NONE, 1 = DITHER_ERROR
    'f' => false,
    'r' => 1.0,  // Resize factor 1.0 = 100%
    'w' => 0.75, // Dither treshold weight
], getopt("f:r:w:d:ib"));

// An image file/url is required.
$opts['f'] || die("Must specify an image file.\n");

// The -i option inverts the image
$image = Pixeler\Pixeler::image($opts['f'], $opts['r'], isset($opts['i']), $opts['w'], $opts['d']);

// No colors if "-b" is passed
isset($opts['b']) && $image->clearColors();

// The Pixeler\Image instance render itself if casted to a string
echo $image;

$ php pixel.php -f http://drop.caffeina.co/image/160L0Y3C0a29/vocaloid.jpg -r .25 -w 0.25 -i

<img src="http://drop.caffeina.co/image/1B133A0N3V0c/vocal.png" width="700" />

$ php pixel.php -f http://flippywall.com/wp-content/uploads/2014/07/Manga-Girl-Wallpaper-16.jpg -r 0.15 -w 0.5 -i

<img src="http://drop.caffeina.co/image/471V2N1J1R1r/pixlr-color.png" width="700" />

$ php pixel.php -f http://blog.circleci.com/wp-content/uploads/2014/07/elephant.jpg -r 0.3 -w 0.5 -b

<img src="http://cl.ly/image/1W2B0i2X3f01/pixeler_demo.png" width="700" />

Dithering

Use the -d option to choose 1-bit dithering mode.

Command | Constant | Description ----|------|---- -d0 | Pixeler\Image::DITHER_NONE | Threshold 1-bit quantization -d1 | Pixeler\Image::DITHER_ERROR | Dither image with 1-bit Atkinson Dithering

Animation Example

You will see a lot of tearing, need some kind of vsync wait.

<?php

// Vendors
include __DIR__."/vendor/autoload.php";

$screen = new Pixeler\Canvas(160,100);
$sh2 = $screen->height()/2;
$sh4 = $sh2/1.5;
$ph = pi()/32;
$i = 0;

// To exit, press Ctr-C
while(1){
  $screen->clear();
  for ($x=0,$c=$screen->width(); $x < $c; $x++){
    $y = $sh4sin($i++/128 + $ph$x);
    $screen->setPixel($x,$sh2 + $y);
    $screen->setPixel($x,$sh2 + $y/2);
    $screen->setPixel($x,$sh2 + $y/4);
    $screen->setPixel($x,$sh2);
  }
  echo $screen;
}

<img src="http://f.cl.ly/items/3P212W0G0S0m0s1d3w1r/code.gif" width="700" />


Screenshots  
  • Colors
  • Elephant
  • Video
  Files folder image Files  
File Role Description
Files folder imagebin (1 file)
Files folder imagesrc (1 directory)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file LICENSE.md Lic. License
Accessible without login Plain text file README.md Doc. Auxiliary data

  Files folder image Files  /  bin  
File Role Description
  Accessible without login Plain text file pixeler Example Example CLI tool

  Files folder image Files  /  src  
File Role Description
Files folder imagePixeler (4 files)

  Files folder image Files  /  src  /  Pixeler  
File Role Description
  Plain text file Canvas.php Class Class source
  Plain text file Image.php Class Class source
  Plain text file Matrix.php Class Class source
  Plain text file Pixeler.php Class Main Class

 Version Control Unique User Downloads Download Rankings  
 72%
Total:169
This week:1
All time:8,846
This week:571Up
User Comments (1)
Nice class!!!
8 years ago (Miguel)
60%StarStarStarStar