Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/kevin-cantwell/dotmatrix

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/kevin-cantwell/dotmatrix

  • v0.0.0-20190516234139-135e8f4a93cd
  • Source
  • Go
  • Socket score

Version published
Created
Source

imageimage

****** image input ****** ****** terminal output ******

Dotmatrix is a simple and fun package & command-line utility for encoding images to all-braille unicode representations. It can be used as a standalone command-line utility or as a package. Currently jpeg, gif, png, and bmp types are supported.

Animated gif support is experimental, but awesome ;) NOTE: Some terminals, such as iTerm2, have a poor refresh rate when playing animated gifs. This cannot be helped. The default terminal on OSX is quite speedy though. This is what it looks like:

lemonade

Godocs

Usage

As a Package

import (
  "image"
  "os"
  "github.com/kevin-cantwell/dotmatrix"
)

func Encode(img image.Image) error {
  return dotmatrix.Print(os.Stdout, img)
}

As a Command-Line Utility

Installation
> go get -u github.com/kevin-cantwell/dotmatrix/cmd/dotmatrix
> dotmatrix --help
NAME:
   dotmatrix - A command-line tool for encoding images as unicode braille symbols.

USAGE:
   1) dotmatrix [options] [file|url]
   2) dotmatrix [options] < [file]

VERSION:
   0.1.0

AUTHOR:
   Kevin Cantwell <kevin.cantwell@gmail.com>

COMMANDS:
     help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --invert, -i                    Inverts image color. Useful for black background terminals
   --gamma value, -g value         GAMMA less than 0 darkens the image and GAMMA greater than 0 lightens it. (default: 0)
   --brightness value, -b value    BRIGHTNESS = -100 gives solid black image. BRIGHTNESS = 100 gives solid white image. (default: 0)
   --contrast value, -c value      CONTRAST = -100 gives solid grey image. CONTRAST = 100 gives maximum contrast. (default: 0)
   --sharpen value, -s value       SHARPEN greater than 0 sharpens the image. (default: 0)
   --mirror, -m                    Mirrors the image.
   --mono                          Images are drawn without Floyd Steinberg diffusion.
   --motion, --mjpeg               Interpret input as an mjpeg stream, such as from a webcam.
   --framerate value, --fps value  Force a framerate for mjpeg streams. Default is -1 (ie: no delay between frames). (default: -1)
   --help, -h                      show help
   --version, -v                   print the version
Examples

Given this input image:

image

And with a sharpen factor of 100 (max) you get this:

$ dotmatrix --sharpen 100 < face.jpg
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⣜⢽⡺⣿⣿⣺⣿⣏⣿⣿⣿⣿⢿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣜⡞⣧⢅⢳⡙⣼⣻⡢⡺⡼⣻⢞⡯⣟⣽⢻⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣯⣿⣿⣿⡿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡜⣖⢔⠕⢸⡳⡢⡱⠅⡞⣽⠱⢳⢫⡟⡞⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣱⣿⣿⣵⡿⣿⣟⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣷⢿⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⡿⡽⣿⢿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⢣⢫⠀⠣⠂⢘⠐⢁⢊⠠⠉⢎⢎⢣⢿⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⡼⡜⡾⡯⡫⢽⢽⣗⢟⣿⣿⣿⣿⣿⣿⣿⣟⡮⣟⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⡿⡭⡺⣫⣟⡷⣟⢾⢽⢿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣎⠄⢊⢂⠠⠈⠄⠂⠀⢁⢑⠁⢜⡧⡗⢡⢮⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣜⢜⢌⢊⠈⣄⢜⢿⡫⣿⣿⣿⣿⣿⣿⣿⡿⡱⣻⢟⣿⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⢝⠔⢕⣵⢭⡿⡾⣷⣝⢮⢝⡣⣟⡝⢟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣵⡤⠀⠀⠀⠀⠀⠀⠅⢅⠃⡕⢁⠁⡌⢙⢿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠀⡔⠅⠂⠈⢈⠲⠜⣿⣿⣿⣿⣿⣿⣿⣗⢩⢻⢼⣻⣯⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿
⣿⡿⣥⡱⡕⢃⡱⢋⡯⣎⠾⣜⠳⣕⢦⠑⢕⠢⠻⡿⡻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⡀⡀⠀⠀⠀⠀⠕⠀⠀⠀⠀⠐⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⡃⠡⠂⠀⠈⠄⠐⢅⢸⣿⣿⣿⣿⣿⣿⣟⢈⢯⣟⣿⣿⢿⣿⣿⣿⣿⣯⢿⣻⣿⣿
⣿⣿⢵⡪⢂⡎⢄⠅⡒⢵⢹⢊⢋⢢⠁⠁⠂⠈⠀⠀⠀⠁⠙⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣷⡀⠠⠀⠀⠈⠀⠐⠢⠙⣿⣿⣿⣿⣿⣟⠔⣷⡿⡷⡽⣷⣿⣿⣿⣿⣫⢿⣻⣿⣿
⣿⣿⣿⣿⣿⣧⣧⡬⡐⠦⠉⣉⢃⢂⠁⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣻⣿⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠀⠅⣋⣿⣿⣿⣿⣿⣿⢜⢈⣜⢯⣻⡯⣿⣿⣿⣿⢮⢷⣿⣾⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣧⣅⡁⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⣷⡆⠀⠀⠀⠀⠀⠀⠀⡽⣿⣿⣿⣿⢽⢂⠲⠼⢭⢾⣾⣿⣿⣿⣿⢞⣽⣾⢟⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⢧⢃⠡⢡⣡⣜⣿⣿⣿⣿⣿⢽⢿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣆⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠨⣿⣿⣿⣿⡏⡂⠀⠡⠐⢹⣽⣿⣿⣿⣻⠝⡧⣻⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⣿⣿⣿⣿⣿⣿⣿⣽⣿⣄⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⡧⠀⠀⠀⠀⠀⠈⣿⣿⣿⣿⡇⠀⠈⠀⡈⣐⣿⣿⣿⣿⣞⠆⡊⣻⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⢿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠹⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡅⠀⠀⠀⠀⣐⣿⣿⣿⣿⣟⢪⣺⣿⣿⣟
⣿⣿⣿⣽⣿⣿⡿⡿⢿⢟⠟⠻⠛⠛⠚⠛⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡇⠀⠀⠀⠠⣼⣿⣿⣿⣿⢎⢮⣿⣿⡿⣾
⣿⣿⣿⡺⡪⡊⡂⢁⠌⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⠀⠀⠀⠀⠀⠀⠈⠙⢿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⡂⠀⠀⠀⠀⠀⣿⣿⣿⣿⠁⠀⠀⠀⢀⢼⣿⣿⣿⠽⣈⣻⣿⣿⢯⣿
⠿⠿⣿⣺⡪⣢⡢⡡⡢⣑⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠹⢿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⠆⠀⠀⠀⠀⠀⣿⣿⣿⣿⠀⠀⠀⠀⣰⣿⣿⣟⢟⢅⣽⣿⣿⣏⣿⣿
⠀⠀⢽⡾⣿⣿⣿⣿⣿⣿⣗⢯⣇⢷⡵⣶⣦⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠿⣿⣿⣿⣿⣿⣿⣿⣶⣄⠀⠀⠀⠀⠀⠈⢻⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠈⣿⣿⣿⣿⠂⠀⠀⠀⠀⢀⣿⣿⣿⡟⠀⠀⠀⠠⣿⣿⣟⠝⠤⡢⣻⣿⢕⣽⣿⣿
⣴⣾⣾⣿⣟⣿⣿⣿⣿⣿⢎⢗⣵⣫⡻⣿⣿⣿⣿⣿⣶⣦⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⣿⣿⣿⣿⠂⠀⠀⠀⠀⢰⣿⣿⣿⠇⠀⠀⠀⣸⣿⡿⠜⠌⡷⣽⣿⡯⣷⣻⣿⠟
⣿⣾⣿⣿⣿⣿⣿⣿⡟⣎⠪⡝⡜⡾⣺⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⣄⣀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣷⣆⠀⠀⠀⠀⠈⢻⣿⣿⣿⣷⠀⠀⠀⠀⢸⣿⣿⣿⠀⠀⠀⠀⠀⣼⣿⣿⡏⠀⠀⠀⢠⣿⣯⠇⠀⣾⣿⣿⢳⣽⣿⡿⠃⢁
⣿⣿⣿⣿⣿⣿⣿⣿⠉⠀⠀⠀⠀⠀⠀⠉⠉⠙⠛⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⢻⣿⣿⣿⡆⠀⠀⠀⠈⣿⣿⣿⠀⠀⠀⠀⢀⣿⣿⣿⠀⠀⠀⠀⣼⡿⡞⠀⢠⣿⣿⡻⡈⣿⡿⠑⣰⣾
⣿⣿⡟⠉⢏⢿⢏⠣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠛⠻⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⡀⠀⠀⠀⠀⠈⠹⣿⣿⣿⣿⣦⡀⠀⠀⠀⠙⣿⣿⣿⡄⠀⠀⠀⣿⣿⣿⠀⠀⠀⠀⣼⣿⣿⡏⠀⠀⠀⢰⣿⡻⠁⠀⣾⠋⢙⠄⣪⡷⠁⣸⣿⣿
⣿⣿⡁⢐⢨⢝⠄⡕⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠙⠻⢿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣄⠀⠀⠀⠘⢿⣿⣧⠀⠀⠀⢼⣿⣿⠀⠀⠀⠀⣿⣿⣿⠃⠀⠀⠀⣼⡿⠃⠀⢰⠏⠀⢐⢴⡿⢕⣠⣿⣿⣿
⣿⡿⠀⠀⠜⡠⡃⣬⣔⢖⡽⣺⢝⢽⢿⣿⣶⣶⣶⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠙⠛⠿⣿⣿⣿⣿⣶⣦⡀⠀⠀⠀⠙⢿⣿⣿⣧⠀⠀⠀⠘⣿⣿⡄⠀⠀⢸⣿⣿⠀⠀⠀⠀⣿⣿⡟⠀⠀⢀⣼⣿⠁⠀⣠⡞⠁⠀⡰⣽⣿⣾⣿⣿⣿⣿
⣿⠅⠀⠀⢌⢂⣾⣿⡳⡣⣏⢞⣮⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠻⠿⣿⣿⣿⣦⣀⠀⠀⠈⠻⣿⣿⣷⡄⠀⠀⠹⣿⣷⡀⠀⠘⣿⣿⡄⠀⠀⢸⣿⡿⠀⠀⠀⢸⣿⠋⠀⣰⡟⠀⠀⢰⣿⣿⣿⣿⣿⣿⣿⠟
⣿⠂⢀⣠⣾⢾⣿⣿⡝⣮⢳⡹⣼⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣤⣤⣀⡀⠀⠀⠀⠀⠀⠀⠉⠙⠻⢿⣷⣦⡀⠀⠈⠙⣿⣿⣦⣄⠀⠉⢻⣧⠀⠀⠙⣿⡇⠀⠀⢼⡿⠋⠀⢠⡾⠛⠁⢠⡖⠋⠀⠀⣠⣿⣿⡿⢱⣿⣿⠟⠁⠀
⣿⡕⢩⣯⣞⣿⣿⣿⠚⠈⠁⠁⠁⠉⠉⠉⠉⠛⠛⠛⠛⢛⢛⢛⢛⠛⠛⠛⠟⠟⠿⣿⣿⣿⣿⣿⣶⣶⣤⣀⡀⠀⠀⠀⠀⠈⠙⢿⣶⣄⡀⠀⠙⢿⣿⣦⡀⠀⢻⣆⣀⣠⣿⣧⣤⣤⣿⣀⣀⣴⠟⠀⣠⡴⠟⠀⠀⢀⣰⣿⡿⠕⠈⠐⠉⠀⠀⠀⠀
⣿⣶⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢹⣽⣿⣿⡿⢟⢿⣿⣿⣿⣿⣶⣶⣶⣴⣌⠍⠋⠛⠛⠛⠻⠿⠿⢶⣦⣤⣄⣀⠀⠈⠉⠛⠲⢲⢔⡽⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⠛⠿⣿⣿⣿⠏⠋⠉⠀⣀⣤⣶⣿⣿⡯⠋⠀⠠⣟⠀⠀⠀⠀⢀
⣿⣿⣿⣿⣿⡿⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣫⣻⡟⠣⠀⠘⢻⡝⠛⠙⣽⠋⠙⢿⣿⣿⣮⣤⡂⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠛⠚⢋⣉⣥⡾⣿⣿⠑⠈⠿⣍⣉⣩⠾⠁⠀⠈⢋⣻⣮⣵⣷⣾⣿⣿⣿⣿⠿⠛⠀⠀⠀⡨⣿⠄⢀⣠⣾⣿
⣿⣿⣿⠉⠈⡊⢪⠀⠀⠀⠀⣀⣀⣄⣤⣤⣴⣶⣾⣿⣿⣿⣶⣤⣀⡀⠈⠁⠉⠀⢀⢀⣈⢷⣿⣿⣿⣿⣷⣦⣤⣤⣤⣤⣤⣤⣤⣤⣤⣤⡖⠋⠉⢁⣼⠛⠝⢵⣤⣤⣤⣥⣀⣤⣤⣴⣾⠿⠿⠟⠛⠉⠉⠉⠉⠀⠀⠀⠀⠀⢀⡴⣧⣿⣿⣾⣿⣿⣿
⣿⣿⣿⣷⡠⠀⠅⠅⢀⣔⢾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠁⠀⠀⠀⠈⠛⠛⠛⠛⠋⠛⠙⠋⠉⠉⠁⢀⣶⣾⠟⠋⣠⠴⢩⢾⣿⢿⡧⡉⠳⢧⣤⣄⣀⣀⣀⣠⣤⣤⣤⣤⣤⣦⣶⣶⣾⣿⢯⢿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣷⣶⣬⣶⢕⣝⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠛⠛⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⡿⠋⢁⡴⠊⣡⠔⡃⢐⡞⠈⢧⠸⣦⣤⡈⠉⠋⠛⠛⠛⠛⠛⠛⠟⠿⠿⠿⠿⠛⠉⠈⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⢼⣺⣿⣿⣿⣿⣿⣿⠿⠿⠛⠛⠉⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣤⣤⣶⣾⣿⡿⠟⠀⣠⠋⠀⡸⠁⡔⠁⡯⡐⡇⠸⡄⠉⢻⣿⣷⣦⣄⣀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡳⣝⡿⠛⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣶⣾⣿⣿⣿⣿⣿⣿⠿⠛⠋⠉⠀⢠⣴⠃⢠⡾⠁⡞⠀⢸⡇⣇⠱⣄⠹⣄⠀⠈⠙⠻⢿⣿⣿⣿⣾⣷⣶⣶⣶⣶⣦⢄⢆⣾⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣶⣿⣿⣿⣿⣿⡿⠿⠛⠛⠉⠁⠀⠀⠀⠀⣠⣴⡿⠁⣰⣿⠃⢰⠇⠀⣾⡇⢹⡄⠹⡇⠹⣷⣄⡀⠀⠀⠀⠙⠻⠿⣿⣿⣿⣿⣿⣿⣣⢻⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣶⣶⣿⣿⣿⣿⣿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣾⡿⠋⠀⣰⣿⠃⠀⣼⠀⢀⣿⡇⠸⣷⠀⢹⣄⠙⠻⣷⣦⣄⠀⠀⠀⠀⠀⠉⠙⠛⠛⠟⠜⢽⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⢀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⣿⣿⣿⠟⠀⠀⢠⣿⠇⠀⢰⡗⠀⢐⣿⡇⠀⣿⡇⠀⢻⣆⠀⠘⣿⣿⣷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡄⠀⢀⣤⣴⣾⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⣿⣿⣿⠗⠁⠀⠀⣠⣾⣿⠀⠀⣽⠃⠀⢘⣿⡇⠀⢹⣿⡄⠈⢻⣷⡄⠀⠙⠻⣿⣿⣿⣶⣄⡀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣾⣿⣿⣿⣿⠟⠁⠀⠀⠀⣴⣿⣿⡇⠀⠀⣿⠀⠀⢸⣿⣷⠀⠀⣿⣧⠀⠀⢿⣿⡀⠀⠀⠈⠿⣿⣿⣿⣿⣿⣶⡷⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣯⣿⠟⠛⠁⠀⠀⠀⢀⣼⣿⣿⣿⠃⠀⢀⣿⠂⠀⢸⣿⣿⠀⠀⢻⣿⡄⠀⠈⢿⣿⣆⡀⠀⠀⠈⠛⢿⣿⣿⣿⠝⣽⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣾⣿⣿⣿⣿⣿⢋⠡⣤⡀⠀⠀⠀⢠⣾⣿⣿⡟⣃⣠⣤⣾⠋⠀⠀⣼⣿⣿⠀⠀⠈⣿⣷⡀⠀⠘⣿⣿⣷⡄⠀⠀⠀⠀⠉⠉⠁⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠛⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⠟⠉⠀⠉⠑⠩⠙⣲⣴⣾⣿⣿⡟⠋⠙⠉⣿⣿⠇⠀⠀⠀⢿⣿⣿⡀⠀⠀⢹⣿⣷⡀⠀⠙⢿⣿⣿⣦⣄⡀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⠁⠀⠀⠀⢠⣿⣿⠃⠀⠀⠀⢸⣿⣿⣇⠀⠀⠘⣿⣿⣧⠀⠀⠀⠻⣿⣿⣿⣿⣷⣿⣾⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⠃⠀⠀⠀⠀⣸⣿⣿⠀⠀⠀⠀⢘⣿⣿⣿⣆⠀⠀⢻⣿⣿⣧⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⠀⠀⣿⣿⣿⣿⡄⠀⠀⢻⣿⣿⡄⠀⠀⠀⠀⠈⠙⠙⣩⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⣀⣼⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⣴⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⢰⣿⣿⣿⠀⠀⠀⠀⠀⣿⣿⣿⣿⣷⠀⠀⠈⢿⣿⣿⣦⡀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏⠀⠀⠀⢠⣠⣀⣄⣤⣾⣿⣿⣿⣿⣿⡂⠀⠀⠀⠀⢀⣿⣿⣿⣿⡀⠀⠀⡀⣠⣿⣿⣿⣿⣿⡆⠀⠀⠈⢿⣿⣿⣿⣦⡀⢀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣟⠿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠈⠉⢹⣿⣿⣿⣿⣿⣿⠟⠛⠛⠛⠚⠛⣻⣿⣿⣿⣿⠛⠙⠚⠛⠙⢿⣿⣿⣿⣿⣧⠀⠀⠀⠘⣿⣿⣿⣿⠟⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⢊⢹⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⡄⠀⠀⠀⠙⣿⣿⠃⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢏⠄⠀⠝⡁⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⠄⠀⠀⠀⠀⠀⢿⣿⣿⣿⣿⣿⡄⠀⠀⠀⣸⡅⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣳⣿⣿⠅⡀⠂⠅⠢⡂⠀⠀⠀⠀⠀⣠⣿⣿⣿⣿⣿⣿⡟⠡⠪⣒⢲⡲⣔⢖⣾⣿⣿⣿⣿⣿⡂⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⡀⢠⣾⣿⣿⣄⠀⠀⠀⢽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⣗⢷⣿⣿⠐⠀⠠⠁⡑⠨⡂⡀⠀⠀⣴⣿⣿⣿⣿⣿⣿⡿⠃⠀⠀⠀⠀⠈⠀⠁⣿⣿⣿⣿⣿⣿⡆⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⣷⣆⠄⠀⠀⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢿⢣⡫⣞⣟⣿⢷⡡⠁⠠⠁⠄⠅⡊⢶⣀⣺⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠠⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠘⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣇⡂⠀⠀⢈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⡟⢝⢜⢜⢼⡳⣯⢿⣝⠆⡀⠂⢁⠐⡀⡊⣺⣿⣿⣿⣿⣿⣿⣿⡿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠐⣿⣿⣿⣿⣿⣿⣿⡄⠀⠀⠀⠀⠀⠀⠸⠋⠁⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣮⡢⠀⠀⢀⠑⢛⠿⡿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⡿⡻⡹⢨⢘⢌⠆⡧⣳⣫⢯⣟⢮⠢⠀⠂⡀⠂⠠⢨⢺⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠔⡈⠄⠁⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⡨⡐⠀⡐⡀⡂⡑⠝⡿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⡿⡟⡝⠜⡌⠪⡐⠅⡆⡇⣗⢵⣫⢗⡽⡪⢂⠁⢂⠠⠁⠨⢐⢽⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⣿⣿⣿⣿⣿⣿⣿⣿⣧⢀⢀⠂⠅⡁⠄⠂⠀⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣗⡦⡡⠠⡐⠠⢂⢑⠌⢎⠻⡻⣿⣿
⣿⡿⡫⡣⡱⡨⢌⠪⠨⡊⢔⢑⢜⢜⢼⢕⣯⡳⣝⢜⠄⡈⠠⠀⠌⠠⢁⠳⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⢀⠀⠀⠀⠀⠀⠀⢨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⠁⠌⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠻⣿⣿⣿⣿⣿⣿⣽⢮⢱⠠⡑⡐⡐⠡⡡⡑⢅⢇⢟
⡣⢣⢃⠪⡂⠪⡐⢌⠪⡐⢅⠪⡢⡳⡹⣝⢮⢞⢎⠆⠅⡐⢀⢁⠈⡐⢀⠑⡿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣑⠳⣕⣖⢤⢤⢤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠡⢀⠀⡀⠁⡀⠀⠀⠀⠀⠀⠀⠀⠙⠿⡿⣿⣿⣿⣿⣯⢧⡣⡂⡢⢈⢂⠢⠨⢂⠪⠢
⡘⢔⠡⡑⠌⡌⢔⠐⢅⠢⡡⢣⢱⢹⣪⡳⣝⡕⡇⡇⠅⠂⡂⠐⡀⢂⠐⡈⢜⣿⣿⣿⣿⣿⣿⣿⣿⣿⡢⡫⡒⣕⢝⢕⢇⢯⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⡂⠄⡀⠂⠀⠐⠈⠀⠀⠂⠀⠀⠀⠀⠍⢝⢟⣿⣿⣿⣿⡺⣜⢔⠡⡂⠌⠌⡐⠡⡑
⠌⡢⢑⠨⠨⡐⡐⡡⢁⠪⡐⡱⡸⡸⡲⣹⡪⡺⡸⡐⡁⠡⠀⢂⠐⢐⢀⢂⢘⢾⣿⣿⣿⣿⣿⣿⣿⣿⡇⡇⡇⡇⡕⡑⡕⡱⡹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡅⠄⠄⠂⠐⠀⠐⠀⠀⠀⠀⠀⠐⠈⡈⠪⢳⢻⣯⣷⡿⣧⣳⡱⡨⡂⠅⠌⡂⠌
⠨⡐⠔⠡⡑⡐⠌⢔⠡⡑⢌⢎⢎⢎⣏⢮⡪⡣⡣⡊⠄⡡⠈⠄⠂⡐⢀⠂⠢⡹⣿⣿⣿⣿⣿⣿⣿⣿⣯⡪⡎⡇⡇⡣⡱⡨⡘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡡⢂⠐⠀⡀⠀⠠⠐⠀⠂⠐⠀⠀⠠⠨⢘⠸⡸⡪⣟⣿⣺⣵⢳⡘⠌⠔⢐⠡
⠡⢊⠌⠌⢔⢨⠨⡢⢑⠌⡎⡆⣗⢕⢧⢳⢱⢱⢑⠌⡂⠄⠅⠌⢐⠀⡂⠌⢌⠪⣿⣿⣿⣿⣿⣿⣿⣿⣿⣺⡸⡱⡑⡕⢌⢆⠕⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣕⢄⢁⠀⠀⠀⠀⠀⠀⠀⠄⠂⠀⠂⠂⡑⠨⢊⢳⢝⣿⣺⢧⡇⡇⡕⡐⠄
⢌⢂⢪⠨⡢⡡⡱⡘⡌⡪⡸⡸⡸⡜⡎⡎⡮⡪⢢⠑⢄⢑⠨⠐⡐⢀⠂⠡⠂⢕⣻⣿⣿⣿⣿⣿⣿⣿⣿⡷⡕⡕⢌⠪⡊⡢⠡⢣⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⢀⠂⠁⠐⠀⠀⠀⠀⡀⠠⠐⠀⠁⡀⠌⢂⢕⢝⢮⣟⣯⣯⡺⡔⢔⠡
⣢⡣⣕⢕⣕⢜⢬⢢⢣⢱⢱⢱⢱⢱⢱⢱⢱⢑⠅⡊⡐⡐⠠⠡⠐⠠⢈⠨⢈⠢⢽⣿⣿⣿⣿⣿⣿⣿⣿⣿⡳⡨⠂⠕⠨⠨⠊⠄⡱⠹⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡵⣌⠔⠀⠂⠈⠀⢀⠀⠠⠐⢈⠠⢐⠐⠔⡌⢎⡳⣝⢾⣺⢵⡫⡢⡕
⡳⡹⡪⢯⢺⢹⢱⢝⢎⢇⢧⢓⢕⢕⢕⢱⢑⠬⡨⢐⢐⠠⢑⠈⠌⢐⠀⢂⠐⡈⢮⣿⣿⣿⣿⣿⣿⣿⣿⣿⣗⢅⠅⢁⠁⠡⢑⢀⠂⡑⠸⢽⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡵⣝⢬⢈⠄⠁⠄⡀⢂⠨⢐⠨⡢⡣⡣⣣⢳⡹⡜⣝⢞⢽⡺⡝⣞
⠪⡊⡪⢊⠜⡘⠌⢆⠣⡃⢇⠇⢇⠇⡇⡣⡱⢑⢌⠢⡂⢅⠢⠨⠈⠄⡈⠠⠐⠀⢕⢿⣿⣿⣿⣿⣿⣿⣿⣿⣟⡆⠅⠠⠈⠐⢐⢐⠨⢀⠅⠊⠕⡻⡻⣿⣿⣿⣿⣿⣿⣿⣿⡿⣯⣟⡷⣕⡥⡱⡐⠄⢅⢊⢂⠣⡱⢘⠜⢌⠢⡃⡣⡑⢕⠱⡑⡑⡑
⠑⠐⠌⠔⠨⠐⠡⠡⠈⠢⠁⠪⠐⠑⠌⠢⠊⠢⠢⠑⠌⠂⠌⠌⠌⠂⠄⠡⠈⠨⠨⠳⠻⠿⠿⠿⠿⠿⠿⠿⠿⠸⠀⠂⠀⠁⠐⠠⠨⠐⠠⠈⠐⠠⠙⠞⠾⠝⠯⠯⠟⠽⠳⠫⠟⠎⠯⠺⠪⠏⠮⠑⠅⠂⠅⠅⠊⠄⠕⠠⠑⠐⠔⠨⠠⠑⠐⠌⠌

Internals

The input image is decoded and treated with Floyd Steinberg image diffusion in order to capture gray tones in monochrome. Each pixel is then mapped to a matrix of braille Unicode points and the braille symbols are written to an io.Writer in such a way as they appear to reconstruct the image, pixel-for-pixel. Each pixel is mapped to a monochrome color (black or white) depending on a fairly standard RGB luminosity algorithm.

The command-line utility determines the resolution of the output based on the number of columns in the current terminal, so if you make your terminal wider you may get a higher-resolution picture.

Some interesting reading on how braille unicode points work.

FAQs

Package last updated on 16 May 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc