PHP Classes

Pixeler: Render images as UTF-8 text characters

Recommend this page to a friend!
  Info   Example   Screenshots   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 169 All time: 8,857 This week: 524Up
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: 5 packages by
Country: Italy Italy
Age: 43
All time rank: 3806153 in Italy Italy
Week rank: 180 Up7 in Italy Italy Up
Innovation award
Innovation award
Nominee: 3x

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 (3)  
  • Colors
  • Elephant
  • Video
  Files folder image Files (11)  
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 (11)  /  bin  
File Role Description
  Accessible without login Plain text file pixeler Example Example CLI tool

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

  Files folder image Files (11)  /  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

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 72%
Total:169
This week:0
All time:8,857
This week:524Up
User Comments (1)
Nice class!!!
8 years ago (Miguel)
60%StarStarStarStar