ฉันจะทำให้เทอร์มินัลแสดงรูปภาพกราฟิกได้อย่างไร


146

นี่คือการเยาะเย้ยอย่างรวดเร็วที่ฉันคัดลอกและวางร่วมกัน ฉันคิดว่าสิ่งนี้ยอดเยี่ยมและมีประโยชน์

สิ่งนี้มีอยู่แล้วใช่ไหม

http://imgur.com/Z3DbS


5
ฉันมักจะใช้feh! ฉันรู้ว่ามันไม่ได้อยู่ในอาคาร แต่มันก็เป็นงาน
dylnmc

เทอร์มินัลไม่ได้มีไว้สำหรับกราฟิกมันสามารถแสดงอักขระ Unicode เท่านั้นและทำการระบายสี สิ่งที่ดีที่สุดที่คุณจะได้รับคือ ASCII art
Ben

ฉันชอบใช้เทอร์มินัลสำหรับกราฟิกด้วยitermplotซึ่งเป็น MacOS เท่านั้นโชคไม่ดี
miku

คำถามนี้กระตุ้นโดยรูปภาพเบียร์เล็ก ๆ ใน Homebrew หรือไม่? นั่นคืออิโมจิ
Ekevoo

หากคุณอยู่บนเซิร์ฟเวอร์ Ubuntu ที่พยายามดูบน Mac สิ่งนี้จะทำงานได้อย่างสวยงาม: unix.stackexchange.com/a/457076/7000
Sridhar Sarnobat

คำตอบ:


48

อัปเดต 2018-12-31

คิตตี้เทอร์มินัลอีมูเลเตอร์ทั่วสุดยอดเยี่ยมมีicatคำสั่งให้แสดงภาพ (ไม่ทำงานภายใน tmux) คิตตี้ยังเปิดใช้งานตัวอย่างรูปภาพภายในแรนเจอร์ (ตัวจัดการไฟล์เทอร์มินัล) ซึ่งเป็นวิธีที่ฉันใช้บ่อยที่สุดในขณะนี้ (ทำงานภายใน tmux)


1. w3m

ในขณะที่วัตถุประสงค์หลักของw3mการให้การเรียกดูเว็บในคอนโซลก็สามารถใช้เพื่อดูภาพใน terminal แพคเกจที่เกี่ยวข้องกับการติดตั้งอยู่w3mและw3m-img(บน Ubuntu อย่างน้อย) จากนั้นคุณต้องปิดการใช้งานโปรแกรมดูภาพภายนอกโดยการผ่าน-o ext_image_viewer=0หรือผ่านเข้าไปในเมนูตัวเลือก ('o') ภายในw3mและปิดการใช้งานการดูภาพภายนอก

ตอนนี้การพิมพ์w3m <image_name>จะแสดงรูปภาพในเทอร์มินัล w3mจะใช้หน้าต่างเทอร์มินัลทั้งหมดดังนั้นคุณจะไม่เห็นคำสั่งก่อนหน้าของคุณจนกว่าจะเลิกw3m(คิดlessไม่ใช่cat) โปรดทราบว่าหากภาพมีขนาดใหญ่เพื่อให้พอดีกับหน้าต่างเทอร์มินัลภาพนั้นจะยังคงเปิดอยู่ภายนอก (ใน imagemagick สำหรับฉัน) โปรดทราบว่าแม้ว่าฉันจะอ่านสถานที่หลายแห่งที่w3mรูปภาพแบบอินไลน์ไม่ทำงานgnome-terminalแต่ก็ใช้ได้ดีสำหรับฉัน เป็นที่น่ารำคาญเล็ก ๆ น้อย ๆ ที่คุณต้องพิมพ์สองครั้งเพื่อปิดแรกภาพแล้วqw3m

2. คำศัพท์

tycatเป็นส่วนหนึ่งของterminologyและแสดงรูปภาพเช่นcatแสดงไฟล์ข้อความและชอบimgcatใช้กับ iTerm2 ใน OS X

3. libsixel + mlterm / xterm

ติดตั้งlibsixel-binและเทอร์มินัลที่ใช้งานร่วมกันได้ (ตัวอย่างที่กล่าวถึงภายใต้'ข้อกำหนด' ของ readme นี้ตัวอย่างmltermหรือxtermคอมไพล์ด้วยแฟล็กที่ถูกต้องและคุณสามารถดูภาพด้วยimg2sixelคำสั่งแพคเกจทั้งสองนี้มีอยู่ใน repos ของ Ubuntu

4. FIM

จากนั้นก็มีFIMfbiซึ่งเป็นรุ่นปรับปรุงของ โฮมเพจระบุว่ามันสามารถแสดงรูปภาพไม่เพียง แต่กับ framebuffer แต่ยังรวมถึง X อย่างไรก็ตามมันจะไม่ติดตั้งสำหรับฉัน แก้ไขฉันทำให้มันทำงานโดยการดาวน์โหลดเวอร์ชั่น trunk 0.5 อันรัน./configure --disable-exifและเอาออกชั่วคราวanaconda(การกระจายหลาม) จากพา ธ ของฉันเนื่องจากมันทำให้เกิดข้อขัดแย้งกับlibpngก่อนเรียกใช้makeและsudo checkinstall(คุณต้องเขียนหมายเลขเวอร์ชันด้วยตนเองด้วยcheckinstallแต่มันทำให้ง่ายขึ้น เพื่อลบออกกว่าmake install) อย่างไรก็ตามรูปภาพจะยังคงแสดงในหน้าต่างแยกต่างหากแม้ว่าจะเหมือนกับที่fbiคุณไม่จำเป็นต้องเรียกใช้ X ซึ่งเจ๋งมาก

5. jupyter-qtconsole

คุณยังสามารถสร้างความคิดสร้างสรรค์และใช้ jupyter-qtconsole เป็นคอนโซลระบบของคุณกำหนดค่าให้แสดงแบบอินไลน์พล็อต ( %matplotlib inline) จากนั้นแสดงภาพโดยใช้ matplotlib =)

6. feh

fehใช้ X เพื่อแสดงภาพ แต่feh -xปรากฏพวกเขาขึ้นมาในหน้าต่างแบบไร้ขอบที่สามารถปิดได้อย่างรวดเร็วด้วยหรือq xแม้ว่าภาพจะไม่แสดงใน terminal ต่อพูด แต่ฉันคิดว่ามันเป็นมูลค่าการกล่าวขวัญเนื่องจากเป็นวิธีที่ล่วงล้ำน้อยที่สุดที่ฉันได้พบจนถึงและสิ่งที่ฉันใช้จนกว่าจะgnome-terminalได้รับimgcat/ tycatเทียบเท่า


w3m ใช้ caca-utils ดังนั้นจะเป็นการดีกว่าถ้าจะใช้โดยตรง (cacaview e.jpg)
user1133275

65

บางทีcacaอาจเป็นสิ่งที่คุณต้องการ สำหรับภาพ :

sudo apt-get install caca-utils
cacaview /PATH/TO/image.jpg

ตรวจสอบให้แน่ใจว่าหน้าต่างเทอร์มินัลของคุณใหญ่พอ

ตัวอย่างเช่นต่อไปนี้เป็นวิธีแสดงรูปภาพนี้ในcacaview:

ภาพหน้าจอ

บางครั้งฉันใช้เพื่อความสนุกในการดูวิดีโอเป็น ASCIIใน mplayer :) เช่นนี้

mplayer -vo caca /PATH/TO/video.mpg

6
มีประโยชน์มาก - คำสั่งจาก caca-utils ที่ควรแสดงรูปภาพแบบอินไลน์ในเทอร์มินัลคือimg2txt
Wilf

7
ตอนนี้มีผู้เล่นใหม่บนสนาม: github.com/ichinaski/pxl --- ในการทดสอบอย่างรวดเร็วรูปภาพจะดูดีกว่าใน cacaview (ฉันต้องการเพิ่มคำตอบใหม่ แต่เว็บไซต์ไม่ให้ฉัน (?))
user569825

" ดูวิดีโอเป็น ASCII " แต่ ... ทำไม?
Derek 朕會功夫

4
"watch videos as ASCII" But... why? เพราะคุณต้องการ เพราะคุณต้องดูวิดีโอและสิ่งเดียวที่คุณมีคือเทอร์มินัล เพราะถ้าคุณไม่ต้องการอะไรมันไม่ได้หมายความว่าคนอื่นจะทำตาม
Marcin Orlowski

1
mpvมีการส่งออกที่ TCT (เมื่อใช้กับ--quiet) แสดงสื่อใน terminal pxlที่มีคุณภาพเทียบเคียงได้กับ
dsstorefile1

38

ฉันได้เขียนเครื่องมือ C ++ ขนาดเล็กเพื่อแปลงภาพเป็นรหัสควบคุม ANSI RGB และอักขระกราฟิกบล็อก Unicode สำหรับอาคารสมัยใหม่ที่สนับสนุนคุณสมบัติเหล่านี้:  https://github.com/stefaninatingein/TerminalImageViewer

การติดตั้ง:

git clone https://github.com/stefanhaustein/TerminalImageViewer.git
cd TerminalImageViewer/src/main/cpp
make
sudo make install

การใช้งาน:

tiv <image(s)>

แก้ไข : ลิงก์ / คำแนะนำที่เปลี่ยนแปลงไปยังที่เก็บหลัก เพิ่มการใช้งาน

ตัวอย่าง:

TerminalImageViewer


2
มันดูดีมาก! แต่มันคือ Java หรือ C ++?
Andrea Lazzarotto

3
มันเคยเป็น Java แต่จำเป็นต้องมี JVM สำหรับงานง่าย ๆ นี้ทำให้ฉันรำคาญดังนั้นฉันจึงส่งไปยัง C ++ (ภาพหน้าจอยังคงแสดงคำสั่ง java แม้ว่า)
Stefan Haustein

4
ดีกว่า cacaview!
Piotr Dabkowski

1
นี่เป็นเครื่องมือที่น่าอัศจรรย์ ช้าลงอย่างแน่นอน แต่ดีกว่า caca มีการสูญเสียคุณภาพหรือไม่เมื่อใช้ "โหมด 256 บิต"? (ตั้งแต่ที่ฉันต้องโหมดปกติจะ
เลอะ

2
ผลลัพธ์ที่ดีมาก! ขอบคุณมาก! มีประโยชน์มากกับ ssh เมื่อเซิร์ฟเวอร์ x ไม่พร้อมใช้งาน!
Arnaud De Broissia

33

ฉันสร้างฟังก์ชั่นเชลล์บรรทัดเดียวที่ง่ายและรวดเร็วซึ่งแก้คำถามเดิมตามที่ร้องขอในการจำลอง โปรดทราบว่าภาพหน้าจอด้านล่างเป็นภาพจริงไม่ใช่ภาพจำลอง

function lsix() { montage -tile 7x1 -label %f -background black -fill white "$@" gif:- | convert - -colors 16 sixel:-; }

สกรีนช็อตของการใช้คำสั่ง lsix

สิ่งที่จำเป็นต้องมีมีน้อยมาก: xterm และ ImageMagick ( apt-get install xterm imagemagick) xterm ของคุณต้องอยู่ในโหมด vt340 ซึ่งคุณสามารถตั้งค่าใน~/.Xresourcesหรือจากบรรทัดคำสั่ง ( xterm -ti vt340)

ข้อ จำกัด : ใช้เพียง 16 สีเหนือภาพทั้งหมดที่แสดง ซึ่งหมายความว่าภาพอาจดูดีขึ้นเมื่อดูด้วยตนเอง (ดูด้านล่าง)

สกรีนช็อตแสดงข้อ จำกัด สี 16 สี

UPDATE

ในขณะที่คำตอบข้างต้นของฉันยังคงถูกต้องฉันได้สร้างเชลล์สคริปต์ที่ดียิ่งขึ้นซึ่งสามารถทำ 'ls' ของภาพโดยตรงในเทอร์มินัล มีการปรับปรุงทุกประเภทที่ฉันเพิ่มเพื่อทำให้ภาพดูดีขึ้น (สีมากขึ้นอัลฟาที่เหมาะสมการวางแนว JPEG การจัดการภาพจำนวนมากการจัดเรียงแบบย่อส่วน, ... ) ก็ยังคงเป็นโปรแกรมขนาดเล็กที่เป็นธรรม แต่ฉันคิดว่าคนอาจจะต้องการที่จะปรับแต่งเพื่อให้ฉันได้ใส่ขึ้นบน GitHub: https://github.com/hackerb9/lsix


30

คุณไม่สามารถทำเช่นนั้นในหน้าต่าง terminal แต่คุณสามารถทำได้ในคอนโซลลินุกซ์fbiใช้ คุณต้องใช้ framebuffer เพื่อให้สิ่งนี้ทำงาน:

sudo apt-get install fbi

ไปที่คอนโซล Linux (ใช้Ctrl+ Alt+ F1) และป้อนfbi <filename>

มันควรจะแสดงภาพของคุณ


5
คุณหมายถึงอะไรโดย "terminal" กับ "tty"? พวกเขาไม่เหมือนกันหรือ askubuntu.com/questions/506510//
Wernight

6
ไม่ได้ผลสำหรับฉัน แต่เครื่องมือ "caca" ทำงาน ใช้ "DejaVu Sans Mono-16", pixelsize = 16.67 ไฟล์ = / usr / share / fonts / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: ioctl ที่ไม่เหมาะสมสำหรับอุปกรณ์ (ไม่ใช่คอนโซลลินุกซ์?)
Felipe

3
@Wightight Ctrl + Alt + F1 / F2 / F3 ให้คุณได้รับ tty ภายใต้ ubuntu (Ctrl + Alt + F8 เพื่อรับกลับ)
joelostblom

1
นอกจากนี้ยังมีFIMซึ่งเป็นรุ่นที่ปรับปรุงfbiแล้ว โฮมเพจระบุว่ามันสามารถแสดงรูปภาพไม่เพียง แต่กับ framebuffer แต่ยังรวมถึง X อย่างไรก็ตามมันจะไม่ติดตั้งสำหรับฉัน
joelostblom

1
ข่าวดี iTerm2 v3 สามารถแสดงรูปภาพแบบอินไลน์ตรวจสอบiterm2.com/images.html
AB

20

อีกทางเลือกหนึ่งคือคำศัพท์:

ป้อนคำอธิบายรูปภาพที่นี่ https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

คุณสามารถติดตั้งบน Ubuntu ได้โดยเพิ่มที่เก็บข้อมูลตรัสรู้ :

sudo add-apt-repository ppa:enlightenment-git/ppa
sudo apt-get update && sudo apt-get install terminology

หรือในรุ่นล่าสุดของ Ubuntu> = Vivid (15.04) สามารถดึงข้อมูลได้จากแหล่งเก็บข้อมูลอย่างเป็นทางการ

sudo apt-get install terminology

การดูภาพพิมพ์และเพื่อดูรายการของภาพพิมพ์tycat IMAGENAMEtyls -m


5
tycatเพื่อแสดงรูปภาพแบบอินไลน์และtyls -mเพื่อแสดงภาพขนาดย่อขนาดกลางในไดเรกทอรี
joelostblom

sudo add-apt-repository ppa: hannes-janetzek / en ตรัสment-svn ไม่ทำงาน
Gucho Ca

ฉันได้อัปเดตคำตอบเพื่อชี้ให้เห็นถึงการตรัสรู้ ppa ล่าสุด
Javier López

1
@chilicuil terminologyอยู่ในที่เก็บของ Ubuntu อย่างเป็นทางการโดยไม่ต้อง PPA
แมว

@cat คำตอบดั้งเดิมถูกเขียนขึ้นก่อนที่จะมีการเปิดตัวและในขณะนั้นยังไม่มีคำศัพท์, ppa ที่ตรัสรู้ยังมีแพ็คเกจที่แม่นยำ / น่าเชื่อถือและมีเวอร์ชันคำศัพท์ที่ทันสมัยอยู่เสมอ อย่างไรก็ตามบางทีการแก้ไขคำตอบเพื่อชี้ให้เห็นกว่าเวอร์ชันศัพท์ศัพท์แช่แข็งที่มีอยู่ในรุ่นล่าสุดของ Ubuntu จะมีประโยชน์
Javier López

12

มีจริงเช่นโครงการที่ชื่อTermKitถ้าคุณต้องการที่จะทดสอบ - ตรวจสอบhttp://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/แต่มันค่อนข้าง ยังไม่เสร็จ (เนื่องจากคุณดูเหมือนจะมี Mac คุณควรลองรุ่น Mac เนื่องจากเป็น "ต้นฉบับ")

ดังนั้นใช่มันเป็นความคิดที่คุ้มค่าในการสำรวจอย่างไรก็ตาม - การสลับระหว่างโหมดกราฟิกและข้อความอย่างเดียวจะต้องรวดเร็วเนื่องจากฉันไม่ต้องการดูภาพทุกครั้ง นอกจากนี้ - มันจะต้องเข้ากันได้อย่างสมบูรณ์กับเช่น Vim ..


ฉันอ่านเกี่ยวกับโครงการนี้อีกครั้งก่อนในSlashdot ฟังดูน่าสนใจ! น่าเสียดายที่คุณต้องการให้ Google Chrome ใช้ ... ดีแล้วก็ไม่ได้เลวร้ายถ้าคุณใช้ Chrome เพื่อเริ่มต้นด้วย แต่ดูเหมือนว่าจะเป็นการพึ่งพาที่ไม่จำเป็น
Christopher Kyle Horton

@ WarriorIng64 ใช่ฉันสามารถใช้งานได้ถ้าคุณแฮ็คบิตด้วย WebKit ของ Qt - แต่โชคดีที่เรามีchromium-browserrepos เพื่อให้ติดตั้ง Chromelike ได้ง่าย - ฉันไม่ได้ลองใช้ TermKit บนคอมพิวเตอร์ของฉัน (ด้วยโครเมียม ติดตั้ง แต่ใช้ Fx เป็นหลัก) ตั้งแต่ผมค่อนข้างขึ้นอยู่กับกลุ่มและไม่สามารถจริงๆใช้ขั้วที่จะไม่ให้ฉันแก้ไขข้อความของฉันรัก;)
sakjur

8

สิ่งนี้ไม่มีอยู่ gnome-terminalมีความสามารถในการทูตข้อความอย่างน้อยก็เท่าที่ฉันรู้

อย่างไรก็ตามคุณสามารถเรียกโปรแกรมดูรูปภาพจาก commandline เพื่อดูรูปภาพของคุณในโฟลเดอร์เฉพาะ ดังนั้นเมื่อออกจาก mockup ด้านบนของคุณแสดงรายการ. jpg ภาพทั้งหมดในโฟลเดอร์ปัจจุบันคุณสามารถใช้ Eye of GNOME (โปรแกรมดูรูปภาพเริ่มต้นของ Ubuntu) จาก commandline สำหรับสิ่งที่คล้ายกัน:

eog *.jpg &

โปรดทราบว่าหน้าต่างที่ปรากฏขึ้นจะแสดงเพียงภาพเดียวในแต่ละครั้งแม้ว่าคุณจะสามารถใช้ปุ่มลูกศรที่มีให้เพื่อสลับระหว่างภาพเหล่านั้นได้


1
หากทำงานจากเครื่องเทอร์มินัลeog *.jpg & disownจะดีกว่ามิฉะนั้น EOG จะมีแนวโน้มออกเมื่อปิดเครื่อง NB ฉันต้องการ EOG ก็ยังคงดูภาพค่าเริ่มต้นของ Ubuntu - Shotwell เป็นสิ่งที่ดี แต่พยายามที่จะดัชนี 30GB + ของฉันของภาพ .... และช้าและน่ารำคาญอยู่แล้ว
วิลฟ์

คำตอบก่อนหน้าทั้งหมดพิสูจน์โพสต์นี้ผิด
Arnaud De Broissia

7

ฉันเขียนเครื่องมือเพื่อทำสิ่งนี้ ฉันชื่อ mine Show Image In Terminal ( siit) ถือว่าคุณมีเทอร์มินัล 256 สีและการสนับสนุน UTF8 และมันเขียนด้วยภาษา Perl

ฉันทิ้งมัน~/binลงไป มันจะถือว่าคุณมีรูปภาพ :: Magick, Term :: Size, Getopt :: Long and Time: HiRes ซึ่งควรจะมีอยู่ในที่เก็บของ distro หรือ CPAN

ความตั้งใจของฉันคือการ ssh เข้าไปในบ้านของฉันและดูภาพได้อย่างรวดเร็วโดยไม่ต้องเปิดจอแสดงผลเหนือ X. สเกลของสคริปต์ให้มีความกว้าง / ความสูงที่เหมาะสมสำหรับเทอร์มินัลที่คุณอยู่ฉันใช้ตัวอักษร UTF8 เพื่อเพิ่มความละเอียดแนวตั้ง ช่วยให้ชัดเจน YMMV

ภาพตัวอย่างที่นี่

รหัสที่มาที่นี่


1
มันคือ "siit" ไม่ใช่ "shit" (จริงจัง .... )
ระบบปฏิบัติการ Star

เดิมเรียกว่า termpeg แต่มันยากเกินกว่าจะจำได้ นอกจากนี้ "รหัสนี้เป็นส่วนหนึ่งของ siit" ก็ไม่สมเหตุสมผล
Tom

2
ลิงก์ซอร์สโค้ดใช้ไม่ได้สำหรับฉัน แต่ฉันพบรุ่นหนึ่งบนอินเทอร์เน็ตนี่คือมิเรอร์: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
OndřejČertík

โอกาสใดที่คุณสามารถให้รุ่นที่รวมมาด้วยได้? ฉันมักจะยอมแพ้เมื่อต้องติดตั้งห้องสมุด
Sridhar Sarnobat

6

นอกจากคำตอบของโจเอลแล้วตัวจัดการไฟล์เทอร์มินัลของRanger ที่มีw3mimgdisplayนามสกุลสามารถแสดงภาพสีเต็มรูปแบบและยังรองรับ "oldschool ASCII art preview preview" นี่คือวิธีที่คุณสามารถเปิดใช้งานได้ นี่อาจไม่ใช่สิ่งที่แน่นอนที่คุณกำลังมองหา แต่เป็นวิธีในการดูตัวอย่างรูปภาพในเทอร์มินัล

ป้อนคำอธิบายรูปภาพที่นี่


4

เครื่องมืออีกอย่างคือcatimgแม้ว่าจะไม่มีแพ็คเกจสำเร็จรูปสำหรับ Ubuntu มันไม่ได้ดูภาพ แต่เปลี่ยนเป็นตัวอักษรสี

ป้อนคำอธิบายรูปภาพที่นี่


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.