2017-07-11 21:29:46 +02:00
# TerminalImageViewer (tiv)
2016-04-09 00:59:01 +02:00
2017-07-11 21:29:46 +02:00
Small C++ program to display images in a (modern) terminal using RGB ANSI codes and unicode block graphic characters.
2016-04-09 00:59:01 +02:00
2017-07-11 23:54:44 +02:00
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:
2016-04-09 01:21:06 +02:00
2017-07-11 23:53:40 +02:00
For each 4x8 pixel cell of the (potentially downscaled) image:
2016-04-09 01:21:06 +02:00
2017-07-11 21:29:46 +02:00
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
4. Compare the bitmap to the assumed bitmaps for various unicode block graphics characters
5. Re-calculate the foregound and background colors for the chosen character.
2016-04-09 00:59:01 +02:00
2017-07-11 23:53:40 +02:00
See the difference by disabling this optimization using the `-0` option. Or just take a look at the comparsion image at the end of this text.
2017-07-11 22:14:40 +02:00
2017-07-11 21:29:46 +02:00
## Installation
2016-04-09 00:59:01 +02:00
2017-08-07 20:19:30 +02:00
apt install imagemagick || yum install imagemagick
2017-07-11 21:29:46 +02:00
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install
2016-04-09 00:59:01 +02:00
2017-07-11 21:29:46 +02:00
## Usage
2016-04-09 00:59:01 +02:00
2017-07-11 23:53:40 +02:00
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.
2016-04-09 00:59:01 +02:00
2016-12-26 12:40:57 +01:00
## Common problems
2016-12-26 12:34:06 +01:00
- If you see strange horizontal lines, the characters don't fully fill the character cell. Remove additional line spacing in your terminal app
2017-07-11 21:29:46 +02:00
- Wrong colors? Try -256 to use a 256 color palette instead of 24 bit colors
2016-12-26 12:40:57 +01:00
## Examples
2016-12-26 12:34:06 +01:00
2016-04-09 00:59:01 +02:00
![Examples ](http://i.imgur.com/8UyGjg8.png )
2016-06-22 21:20:47 +02:00
2016-06-23 14:10:47 +02:00
If multiple images match the filename spec, thumbnails are shown.
![Thumbnails ](http://i.imgur.com/PTYgSqz.png )
2017-07-11 22:14:40 +02:00
## Comparison to Using Half-Block Characters Only
2017-07-11 23:53:40 +02:00
The top image was generated with the character optization diabled via the `-0` option.
2017-07-11 22:14:40 +02:00
![Comparison ](http://i.imgur.com/OzdCeh6.png )