ascii-pixels

Convert raw image data to ascii art

Usage no npm install needed!

<script type="module">
  import asciiPixels from 'https://cdn.skypack.dev/ascii-pixels';
</script>

README

Ascii Pixels npm

Convert raw image data to ascii art!

install

npm install ascii-pixels

usage

input raw image data, and optionally set contrast or invert colors

var options = {
  contrast: 128,    // range -255 to +255
  invert: true      // invert brightness
}

var ascii = asciiPixels(imageData, options)

The raw image data has the following format:

var imageData = {
  data: frameData,
  width: width,
  height: height
}

You may optionally provide the pixel format: imageData.format = 'RGB24', by default it is RGB32.

examples

Any format is supported as long as you can get the raw image data. Here are a few examples:

node using jpeg-js

var fs = require('fs')
var jpeg = require('jpeg-js')
var asciiPixels = require('ascii-pixels')

var buffer = fs.readFileSync('image.jpg')

var imageData = jpeg.decode(buffer)

var ascii = asciiPixels(imageData)
console.log(ascii)

browser using canvas

var asciiPixels = require('ascii-pixels')

var img = new Image()

img.onload = function () {
  var canvas = document.createElement('canvas')
  canvas.width = img.width
  canvas.height = img.height

  var context = canvas.getContext('2d')
  context.drawImage(img, 0, 0, img.width, img.height)

  var imageData = context.getImageData(0, 0, canvas.width, canvas.height)

  var ascii = asciiPixels(imageData)
  console.log(ascii)
}

img.src = './nodejs-logo.png'

node using canvas

var fs = require('fs')
var Canvas = require('canvas')
var asciiPixels = require('ascii-pixels')

var img = new Canvas.Image
img.src = fs.readFileSync('nodejs-logo.png')

var canvas = new Canvas(img.width, img.height)
var context = canvas.getContext('2d')

context.drawImage(img, 0, 0, img.width, img.height)

var imageData = context.getImageData(0, 0, canvas.width, canvas.height)

var ascii = asciiPixels(imageData)

console.log(ascii)

sample output

                                        C,                                      
                                        8@@@                                    
                                        0@@@                                    
                                        0@@@                                    
     @@             .::.             CG 8@@@         G8              ...        
 t@@@@@@@@1      .:::::::;.       @@@@@@@@@@     ,@@@@@@@@;      .        .     
@@@@@ff@@@@@    ::::;;::;:::    @@@@@0G@@@@@    @@@@@GG@@@@@    .     ..,       
@@@@    @@@@    ::::;;:;;;::    0@@@    8@@@    8@@@ ,, @@,     .     ...       
@@@@    @@@@    :::;;;;;;;::    8@@@t  ;@@@@    8@@@L           .   ...  ,      
@@@,    :@@@     ,:::;;:::,.    i@@@@@@@@@@f    ,@@@@@@8         . .      ..    
                    ,,,:           .@@@@;           8@@@            .  ,        

credit

This project is based on the awesome ascii-camera by Andrei Gheorghe

license

MIT