GithubHelp home page GithubHelp logo

kuhlberg / terminalimageviewer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stefanhaustein/terminalimageviewer

0.0 0.0 0.0 761 KB

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

License: Apache License 2.0

Ruby 0.04% C++ 99.33% Java 0.61% Makefile 0.02%

terminalimageviewer's Introduction

Terminal Image Viewer (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.
  • 2021-05-21: @aaronliu0130 has added Apple Clang support.
  • 2022-02-02: @aaronliu0130 added homebrew support from homebrew-core.

Installation

Build from source

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

Homebrew

Option 1:

brew install tiv

Option 2 (deprecated, for macOS Mojave and below):

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

Snap (outdated)

sudo snap install --edge tiv

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...

  • Before investing in larger contributions, please use an issue to discuss this
  • Pull requests should be as "atomic" as possible. I won't accept any pull request doing multiple things at once.
  • This library currently only depends on ImageMagic as an image processing library and I'd prefer to keep it that way.
  • 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

  • On some linux platforms, an extra flag seems to be required: make LDLIBS=-lstdc++fs (but it also breaks MacOs), see stefanhaustein#103
  • 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

terminalimageviewer's People

Contributors

stefanhaustein avatar aaronliu0130 avatar dtschump avatar alandesmet avatar cabelo avatar hadisfr avatar admirabilis avatar rindeal avatar bperel avatar chen3feng avatar profelis avatar jwilk avatar cszach avatar nik123 avatar boretom avatar dmole avatar crouvpony47 avatar pepa65 avatar shabbyrobe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.