Program C ++ Kecil Untuk Menampilkan Gambar di Terminal (Modern) Menggunakan Kode ANSI RGB dan Karakter Grafis Blok Unicode.
Ada berbagai alat serupa (seperti timg ) yang menggunakan karakter setengah blok Unicode untuk menampilkan dua piksel 24bit per sel karakter. Program ini meningkatkan resolusi dengan memetakan sel piksel 4x8 ke karakter unicode yang berbeda, menggunakan algoritma berikut untuk setiap sel piksel 4x8 dari gambar (berpotensi diturunkan):
Lihat perbedaan dengan menonaktifkan optimasi ini menggunakan opsi -0 . Atau lihat saja gambar perbandingan di akhir teks ini.
tiv [options] < filename > [ < filename > ...] Shell akan memperluas wildcard. Secara default, thumbnail dan nama file akan ditampilkan jika lebih dari satu gambar disediakan. Untuk daftar opsi, jalankan perintah tanpa parameter atau dengan --help .
SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-laterPenting
Semua metode instalasi memerlukan pemasangan Imagemagick, ketergantungan yang diperlukan. Sebagian besar manajer paket harus menginstalnya secara otomatis.
Makefile kami saat ini hanya mendukung g++ . Seharusnya dimungkinkan untuk mengkompilasi tiv secara manual menggunakan kompiler favorit Anda yang mendukung header C ++ 17 dan UNIX ( ioctl.h dan sysexits.h , khususnya) atau windows.h . PR dipersilakan.
git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src
make
# To move the tiv binary into your PATH (hopefully), also do
sudo make install Tolong jangan lupa untuk menginstal Imagemagick ... di Linux berbasis Debian melalui sudo apt install imagemagick dan pada macOS melalui brew install imagemagick .
brew install tivKarena Apple Shell asli hanya mendukung 256 Mode Warna (-256) dan tampaknya ada beberapa jarak garis ekstra, mendistorsi gambar, kami juga merekomendasikan untuk menginstal iterm2:
brew install --cask iterm2
make LDLIBS=-lstdc++fs (tetapi juga merusak macOS), lihat #103TIV dapat digunakan sebagai API. Jadi, jika Anda selalu ingin menjalankan FPS favorit Anda dalam cangkang, ini adalah kesempatan.
Semua kode yang berguna sebagai perpustakaan diisolasi dalam tiv_lib.h dan tiv_lib.cc.
Titik masuk utama adalah
CharData findCharData (GetPixelFunction get_pixel, int x0, int y0, const int &flags)Panggilan mengambil fungsi std :: yang memungkinkan kode TIV untuk meminta piksel dari framebuffer Anda.
Dari framebuffer ini, panggilan akan meminta piksel untuk persegi panjang piksel 4x8, di mana x0 dan y0 menentukan sudut kiri atas. Panggilan mencari karakter grafis Unicode terbaik dan warna untuk memperkirakan sel gambar ini, dan mengembalikannya dalam struct chardata.
Saya senang menerima kontribusi yang berguna di bawah lisensi Apache 2.0, tapi ...
Sebagian besar contoh diambil dengan versi Java dari program ini, yang seharusnya memiliki output yang setara tetapi lebih lambat oleh milenia pada tahun CPU.
Jika beberapa gambar cocok dengan spesifikasi nama file, thumbnail ditampilkan.
Untuk contoh di bawah ini, gambar atas dihasilkan dengan optimasi karakter dinonaktifkan melalui opsi -0 .
Anda bebas menggunakan kode ini di bawah GPL (3 atau lebih baru) atau versi 2.0 dari lisensi Apache. Kami menyertakan perpustakaan CIMG, yang dilisensikan di bawah Cecill 2.0 (dekat dengan GPL dan kompatibel dengan itu) atau [Cecill-C] (https://spdx.org/licenses/cecill-c) (dekat dengan LGPL dan kompatibel dengan Apache).