npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

asciify-image

v0.1.10

Published

Convert images to ASCII art without native dependencies

Downloads

13,875

Readme

asciify-image

Convert images to ASCII art without native dependencies

asciify-image allows you to convert images to ASCII art without native dependencies. This means that all you need to do is npm install ascii-image, instead of brewing and apt-geting other packages.

Features

  • Support for most common image types
  • Color and B/W
  • Numerous resizing options
  • CLI tool

Installing

Just install with npm:

$ npm install asciify-image

Or, if you want to use it directly in the command line:

$ npm install -g asciify-image

API

This API applies to asciify-image both as a Node.js module (example) and as a CLI tool. Use the -? or --help flag to see more about the CLI tool.

path

The file path, URL, or buffer for the image you wish to asciify. Currently supported formats are:

  • JPG
  • PNG
  • GIF

options.color

Default: true

If options.color is set to true, the asciified image will be in color when printed in your terminal. If set to false, the image will be in black and white.

options.fit

Default: 'original', CLI default: 'box'

The fit to resize the image to:

  • box - Resize the image such that it fits inside a bounding box defined by the specified width and height. Maintains aspect ratio.
  • width - Resize the image by scaling the width to the specified width. Maintains aspect ratio.
  • height - Resize the image by scaling the height to the specified height. Maintains aspect ratio.
  • original - Doesn't resize the image.
  • none - Scales the width and height to the specified values, ignoring original aspect ratio.

options.width

Default: original image width, CLI default: window width

The width to resize the image to. Use a percentage to set the image width to x% of the terminal window width.

options.height

Default: original image height, CLI default: window height

The height to resize the image to. Use a percentage to set the image height to x% of the terminal window height.

options.format

Default: 'string'

The format to return the asciified image in. Can be "string" or "array".

options.c_ratio

Default: 2

Since a monospace character is taller than it is wide, this property defines the integer approximation of the ratio of the width to height. You probably don't need to change this.

callback

The function to call after the image is asciified. Receives any errors that occurred as the first parameter and the asciified text as the second. When omitted, the module will return a Promise (example).

Examples

Using Callback Functions

var asciify = require('asciify-image');

var options = {
  fit:    'box',
  width:  200,
  height: 100
}

asciify('path/to/image.png', options, function (err, asciified) {
  if (err) throw err;

  // Print to console
  console.log(asciified);
});

Using Promises

var asciify = require('asciify-image');

var options = {
  fit:    'box',
  width:  200,
  height: 100
}

asciify('path/to/image.png', options)
  .then(function (asciified) {
    // Print asciified image to console
    console.log(asciified);
  })
  .catch(function (err) {
    // Print error to console
    console.error(err);
  });

How It Works

Images are represented by pixels. This package reads each pixel as an RGBa value. Each of these values is converted into a single integer, called "intensity". A darker pixel would have a higher intensity, and a lighter pixel would have a lower intensity.

For each pixel, a character is substituted: for a light pixel, the character "," may be substituted, but for a darker pixel, the character "8" would be substituted. Since these characters are different sizes, they look lighter or darker in the big picture (pun somewhat intended).

Some inspiration from image-to-ascii, but the code is written from scratch. Mostly created this because I didn't like the native dependencies required in existing asciification libraries.