stefan.haustein@gmail.com 2018-12-09 19:30:18 +01:00
commit 4b116332f7
5 changed files with 3108 additions and 2552 deletions

94
.gitignore vendored Normal file
View File

@ -0,0 +1,94 @@
###C++###
# Prerequisites
*.d
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
tiv
###Java###
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
###Linux###
*~
# KDE directory preferences
.directory
###OSX###
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear on external disk
.Spotlight-V100
.Trashes
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

View File

@ -9,9 +9,9 @@ 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
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.
5. 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 comparsion image at the end of this text.
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.
## Installation
@ -27,6 +27,13 @@ See the difference by disabling this optimization using the `-0` option. Or just
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
- megamaced has created a RPM for SUSE:
https://build.opensuse.org/package/show/home:megamaced/terminalimageviewer
- bperel has created a Docker image:
https://hub.docker.com/r/bperel/terminalimageviewer
## 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
@ -34,15 +41,15 @@ The shell will expand wildcards. By default, thumbnails and file names will be d
## Examples
![Examples](http://i.imgur.com/8UyGjg8.png)
![Examples](https://i.imgur.com/8UyGjg8.png)
If multiple images match the filename spec, thumbnails are shown.
![Thumbnails](http://i.imgur.com/PTYgSqz.png)
![Thumbnails](https://i.imgur.com/PTYgSqz.png)
## Comparison to Using Half-Block Characters Only
The top image was generated with the character optization diabled via the `-0` option.
The top image was generated with the character optimization disabled via the `-0` option.
![Comparison](http://i.imgur.com/OzdCeh6.png)
![Comparison](https://i.imgur.com/OzdCeh6.png)

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,12 @@
CXX=g++
default: tiv
tiv.o: tiv.cpp CImg.h
g++ -std=c++17 -Wall -fpermissive -fexceptions -O2 -c tiv.cpp -o tiv.o
$(CXX) -std=c++17 -Wall -fpermissive -fexceptions -O2 -c tiv.cpp -o tiv.o
tiv : tiv.o
g++ tiv.o -o tiv -lstdc++fs -pthread -s
$(CXX) tiv.o -o tiv -lstdc++fs -pthread -s
install: tiv
cp tiv /usr/local/bin/tiv

View File

@ -362,14 +362,14 @@ void emitCodepoint(int codepoint) {
std::cout << (char) (0x80 | ((codepoint >> 6) & 0x3f));
std::cout << (char) (0x80 | (codepoint & 0x3f));
} else {
std::cout << "ERROR";
std::cerr << "ERROR";
}
}
void emit_image(const cimg_library::CImg<unsigned char> & image, int flags) {
for (int y = 0; y < image.height() - 8; y += 8) {
for (int x = 0; x < image.width() - 4; x += 4) {
for (int y = 0; y <= image.height() - 8; y += 8) {
for (int x = 0; x <= image.width() - 4; x += 4) {
CharData charData = flags & FLAG_NOOPT
? getCharData(image, x, y, 0x2584, 0x0000ffff)
: getCharData(image, x, y);