All Projects → stefanhaustein → Terminalimageviewer

stefanhaustein / Terminalimageviewer

Licence: apache-2.0
Small C++ program to display images in a (modern) terminal using RGB ANSI codes and unicode block graphics characters

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Terminalimageviewer

TerminalConsoleAppender
JLine 3 appender for Log4j2, allows extending command line apps using colors and command completion
Stars: ✭ 49 (-94.66%)
Mutual labels:  ansi-colors
Ansi Colors
Easily add ANSI colors to your text and symbols in the terminal. ansi-colors is the official ansi styling library for gulp, and is used by hundreds of other projects, including mocha and enquirer.
Stars: ✭ 300 (-67.28%)
Mutual labels:  ansi-colors
Pterm
✨ #PTerm is a modern go module to beautify console output. Featuring charts, progressbars, tables, trees, and many more 🚀 It's completely configurable and 100% cross-platform compatible.
Stars: ✭ 449 (-51.04%)
Mutual labels:  ansi-colors
rich
Rich is a Python library for rich text and beautiful formatting in the terminal.
Stars: ✭ 36,988 (+3933.59%)
Mutual labels:  ansi-colors
Taoup
The Tao of Unix Programming (Ruby-powered ANSI colored fortunes)
Stars: ✭ 265 (-71.1%)
Mutual labels:  ansi-colors
Ansi
Small, fast library to create ANSI colored strings and codes. [go, golang]
Stars: ✭ 323 (-64.78%)
Mutual labels:  ansi-colors
line
An easy to use golang package for stylizing terminal output
Stars: ✭ 26 (-97.16%)
Mutual labels:  ansi-colors
Pretty
Library for helping print things prettily, in Clojure - ANSI fonts, formatted exceptions
Stars: ✭ 474 (-48.31%)
Mutual labels:  ansi-colors
Picocli
Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.
Stars: ✭ 3,286 (+258.34%)
Mutual labels:  ansi-colors
Shml
SHell Markup Language | Style Framework for The Terminal
Stars: ✭ 411 (-55.18%)
Mutual labels:  ansi-colors
gitlab-job-log-viewer
Browser extension for code highlighting raw logs in Gitlab CI
Stars: ✭ 21 (-97.71%)
Mutual labels:  ansi-colors
Jcolor
An easy syntax to format your strings with colored fonts and backgrounds.
Stars: ✭ 255 (-72.19%)
Mutual labels:  ansi-colors
Mordant
Full-featured text styling for Kotlin command-line applications
Stars: ✭ 382 (-58.34%)
Mutual labels:  ansi-colors
colored json
Generating colored JSON in Rust
Stars: ✭ 17 (-98.15%)
Mutual labels:  ansi-colors
2048.c
Console version of the game "2048" for GNU/Linux
Stars: ✭ 453 (-50.6%)
Mutual labels:  ansi-colors
termshot
Creates screenshots based on terminal command output
Stars: ✭ 114 (-87.57%)
Mutual labels:  ansi-colors
Paint
Ruby gem for ANSI terminal colors 🎨︎ VERY FAST
Stars: ✭ 317 (-65.43%)
Mutual labels:  ansi-colors
Rich
Rich is a Python library for rich text and beautiful formatting in the terminal.
Stars: ✭ 31,664 (+3353%)
Mutual labels:  ansi-colors
Gradle Test Logger Plugin
A Gradle plugin for printing beautiful logs on the console while running tests
Stars: ✭ 460 (-49.84%)
Mutual labels:  ansi-colors
Python Coloredlogs
Colored terminal output for Python's logging module
Stars: ✭ 408 (-55.51%)
Mutual labels:  ansi-colors

TerminalImageViewer (tiv)

Small C++ program to display images in a (modern) terminal using RGB ANSI codes and unicode block graphic characters.

There are various similar tools (such as timg) using the unicode half block character to display two 24bit pixels per character cell. This program enhances the resolution by mapping 4x8 pixel cells to different unicode characters, using the following algorithm:

For each 4x8 pixel cell of the (potentially downscaled) image:

  1. Find the color channel (R, G or B) that has the biggest range of values for the current cell
  2. Split this range in the middle and create a corresponding bitmap for the cell
  3. Compare the bitmap to the assumed bitmaps for various unicode block graphics characters
  4. Re-calculate the foreground and background colors for the chosen character.

See the difference by disabling this optimization using the -0 option. Or just take a look at the comparison image at the end of this text.

News

  • 2019-03-26: Exciting week: @Cableo has fixed output redirection, @boretom has added cross-compilation support to the build file and @AlanDeSmet has fixed tall thumbnails and greyscale images.
  • 2019-01-14: Install via snap: sudo snap install --edge tiv
  • 2020-04-09: @aaronliu0130 has added homebrew support.
  • 2020-07-05: @cxwx has fixed homebrew support.

Installation

Snap

sudo snap install --edge tiv

Homebrew

Option 1: brew tap stefanhaustein/TerminalImageViewer https://github.com/stefanhaustein/TerminalImageViewer brew install terminalimageviewer

Option 2(deprecated): brew install https://raw.githubusercontent.com/stefanhaustein/TerminalImageViewer/master/terminalimageviewer.rb

Build from source

sudo apt install imagemagick || yum install ImageMagick
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install

Note: On MacOS, you'll need to install GCC because of this issue: https://stackoverflow.com/q/42633477. Find some more details here: https://github.com/stefanhaustein/TerminalImageViewer/issues/36

Usage

tiv [options] <filename(s)>

The shell will expand wildcards. By default, thumbnails and file names will be displayed if more than one image is provided. To display a list of options, just run the command without any parameters.

Packages / Contributions

I am happy to accept useful contributions under the Apache 2.0 licencse, but it might make sense to file an issue to discuss the approach before investing large amounts of time.

Support for additional platforms, CPUs or similar will require somebody who is happy to help with maintenance, in particular, if I don't have access to it.

Common problems

  • If you see strange horizontal lines, the characters don't fully fill the character cell. Remove additional line spacing in your terminal app
  • Wrong colors? Try -256 to use a 256 color palette instead of 24 bit colors
  • Strange characters? Try -0 or install an use full unicode font (e.g. inconsolata or firacode)

Examples

Examples

If multiple images match the filename spec, thumbnails are shown.

Thumbnails

Comparison to Using Half-Block Characters Only

The top image was generated with the character optimization disabled via the -0 option.

Comparison

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].