#ascii #graphics

asciifyer

Rust library to easily turn images into ASCII art

1 unstable release

0.1.1 Dec 16, 2020

#743 in Images

Apache-2.0

61KB
62 lines

ASCIIfyer

This crate provides an easy way to turn a normal image into an ASCII picture. Supported image formats are the ones that the image crate supports; see here for the list.

By default, images are resized to 250x250 pixels before turning them into ASCII. You can override this by passing a Dimension struct with a width and height. If the image is smaller than the dimensions, it will not be resized.

Features

  • Open an image file and convert the contents into an ASCII string

Optional Features

  • fetch - Enabling this feature allows the use of a function to download images from a URL.

Examples

Here is a simple example for turning an image into ASCII. To try out the provided example, use cargo run --example asciify /path/to/picture.png

use asciifyer::{convert_to_ascii, Dimension};
use std::env;

fn main() {
    let path = env::args().nth(1).expect("Please enter a path to an image");

    let dimensions = Dimension::new(50, 50);
    let ascii = convert_to_ascii(&path, Some(dimensions));

    println!("{}", ascii);
}

Example output using the provided dolphin image:

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#@@@@0;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;/########@@;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;@############;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;0/#00#########/;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;///O0000#######0;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;////;0000000000##;;;;;;;;;
 ;;;;;;;;;;;;;;;/#;;;://///;000000000000/;;;;;;;;
 ;;;;;;;;;;;;;;;//0;;/////;;0000000000000;;;;;;;;
 ;;;;;;;;;;;;;;;/;0##////;;;;0000000000000@;;;;;;
 ;;;;;;;;;;;;;;;;;;;0////;;;;0000000/00####0;;;;;
 ;;;;;;;;;;;;;;:;;0/;///;;;;;00000///O///###;;;;;
 ;;;;;;;;;;;;;;;;#/////;;;;;;00000O/:;;;/0##;;;;;
 ;;;;;;;;;;;;;;;:////O/;;;;;;:000O/;;;;;;00#/;;;;
 ;;;;;;;;;;;;;;;///////;;;::;:00///;;;;;;O0.;;;;;
 ;;;;;;;;;;;;;;O/////;:;;@  :;0O///:;;;;/'O;;;;;;
 ;;;;;;;;;;;;;0/////;;;;;@@';;;O/O//::;,,;;;;;;;;
 ;;;;;;;;;;;;0/////;;;;;;O;;;;;OOO/;:,,:;;;;;;;;;
 ;;;;;;;;;;;/////;;;;;;.;;;;;;;0OO/,,';;;;;;;;;;;
 ;;;;;;;;;;;/////;;;;;;;;;;;;;;/',,,..//;;;;;;;;;
 ;;;;;;;;;;;////;;;;;;;/;;;;;;,,,,....:;;;;;;;;;;
 ;;;;;;;;;;///;;;;;;;;//;;;;:,,..,....;;;;;;;;;;;
 ;;;;;;;;;;;//;;;;;;;//,;;;,....:,..;;;;;;;;;;;;;
 ;;;;;;;;;;;//;;;;;;OO,.;......;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;/;;;;;0OO..:......;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;/;;;;000.:;......;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;:;;;00;::;......;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;:;;00.::;.....,;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;:;00 ;;;.....,;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;:00';;;.....;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;0,;;;....;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;::;;;....;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;/:;:;....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;#///;;::...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;#0,,:;;:...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;:.,,,;;...;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;0;..,,;:.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;...,;:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;/:.:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

License

Copyright © 2020 Evan Maddock maddock.evan@vivaldi.net

ASCIIfyer is available under the terms of the Apache 2.0 license.

Dependencies

~13–28MB
~233K SLoC