¿Cómo hago que mi terminal muestre imágenes gráficas?

146

Esta es una maqueta rápida que copié y pegué juntos. Me imagino que esto es súper genial y útil.

¿Ya existe algo como esto?

http://imgur.com/Z3DbS

Dennkster
fuente
55
Yo siempre solo uso feh! Sé que no está en la terminal, pero hace su trabajo.
dylnmc
Terminal no es para gráficos, solo puede mostrar caracteres unicode y colorear. Lo mejor que puede obtener es el arte ASCII.
Ben
Me encanta usar el terminal para gráficos con itermplot , que desafortunadamente solo es macOS.
miku
¿Esta pregunta está motivada por la pequeña imagen de cerveza en Homebrew? Eso es un emoji.
Ekevoo
Si está en un servidor Ubuntu tratando de verlos en una Mac, esto funciona de maravilla: unix.stackexchange.com/a/457076/7000
Sridhar Sarnobat

Respuestas:

48

Actualización 31/12/2018

El gatito emulador de terminal excelente tiene un icatcomando para mostrar imágenes (no funciona dentro de tmux). Kitty también habilita las vistas previas de imágenes dentro de ranger (un administrador de archivos de terminal), que es el método que utilizo actualmente con más frecuencia (funciona dentro de tmux).


1. w3m

Si bien el objetivo principal w3mes proporcionar navegación web en la consola, también se puede usar para ver imágenes en la terminal. Los paquetes relevantes para instalar son w3my w3m-img(al menos en Ubuntu). Luego, debe deshabilitar el visor de imágenes externas al pasar -o ext_image_viewer=0o al acceder al menú de opciones ('o') en el interior w3my deshabilitar la visualización de imágenes externas.

Ahora, al escribir w3m <image_name>se mostrará la imagen en la terminal. w3musará toda la ventana de terminal, por lo que no puede ver sus comandos anteriores hasta que salga w3m(piense less, no cat). Tenga en cuenta que si la imagen es demasiado grande para ajustarse a la ventana del terminal, todavía se abrirá externamente (en imagemagick para mí). También tenga en cuenta que, aunque leo varios lugares en los que las w3mimágenes en línea no funcionarían gnome-terminal, funciona bien para mí. Es un poco molesto que tengas que escribir qdos veces para cerrar primero la imagen y luego w3m.

2. Terminología

tycates parte de terminologyy muestra imágenes como catmuestra archivos de texto y imgcatfunciona para iTerm2 en OS X.

3. libsixel + mlterm / xterm

Instale libsixel-biny cualquier terminal compatible (ejemplos mencionados en 'Requisitos' de este archivo Léame , por ejemplo, mltermo xtermcompilados con los indicadores correctos y puede ver imágenes con el img2sixelcomando. Ambos paquetes están disponibles en los repositorios de Ubuntu.

4. FIM

Luego está FIM, que es una versión mejorada de fbi. La página de inicio indica que puede mostrar imágenes no solo con el framebuffer, sino también con X. Sin embargo, no se instalará para mí. Editar Lo ejecuté descargando la versión de troncal 0.5, ejecutándola ./configure --disable-exify luego eliminando temporalmente anaconda(distribución de python) de mi ruta ya que causó un conflicto libpngantes de ejecutar makey sudo checkinstall(necesita escribir un número de versión manualmente con checkinstall, pero lo hace más fácil para eliminar que make install). Sin embargo, las imágenes todavía se muestran en una ventana separada, aunque al igual que con fbiusted no necesita ejecutar X, lo cual es algo genial.

5. jupyter-qtconsole

También puede ser creativo y usar jupyter-qtconsole como consola del sistema, configurarlo para mostrar gráficos en línea ( %matplotlib inline) y luego mostrar la imagen usando matplotlib =)

6. feh

fehestá utilizando X para mostrar imágenes, pero las muestra feh -xen una ventana sin bordes que se puede cerrar rápidamente con qo x. Aunque las imágenes no se muestran en el terminal, por ejemplo, pensé que valía la pena mencionarlo, ya que es la forma menos intrusiva que he encontrado hasta ahora y lo que estoy usando hasta gnome-terminalobtener un imgcat/ tycatequivalente.

joelostblom
fuente
w3m está usando caca-utils, por lo que sería mejor usarlo directamente (cacaview e.jpg)
user1133275
65

Quizás caca es lo que quieres. Para imagenes :

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

Asegúrese de que su ventana de terminal sea lo suficientemente grande.

Por ejemplo, así es como se muestra esta imagen en cacaview:

Captura de pantalla

A veces lo usaba por diversión para ver videos como ASCII en mplayer :) Me gusta esto:

mplayer -vo caca /PATH/TO/video.mpg
usuario569825
fuente
66
Muy útil: un comando de caca-utils que debería mostrar imágenes en línea en la terminal esimg2txt
Wilf
77
Ahora hay un nuevo jugador en el campo: github.com/ichinaski/pxl --- En una prueba rápida, las imágenes se ven mejor que en cacaview. (Quería agregar una nueva respuesta, pero el sitio no me dejó (?))
user569825
" ver videos como ASCII " Pero ... ¿por qué?
Derek 朕 會 功夫
44
"watch videos as ASCII" But... why? porque quieres porque necesitas mirar el video y lo único que tienes es terminal? Porque si no necesitas algo, NO significa que otros te sigan.
Marcin Orlowski
1
mpvtiene una salida tct que (cuando se usa con --quiet) muestra medios en el terminal con una calidad comparable a pxl.
dsstorefile1
38

He escrito una pequeña herramienta C ++ para convertir imágenes a códigos de control ANSI RGB y caracteres gráficos de bloque Unicode para terminales modernos que admiten estas características:  https://github.com/stefanhaustein/TerminalImageViewer

Instalación:

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

Uso:

tiv <image(s)>

Editar : Se cambiaron enlaces / instrucciones al repositorio principal; uso añadido

Ejemplos:

TerminalImageViewer

Stefan Haustein
fuente
2
¡Esto se ve muy bien! ¿Pero es Java o C ++?
Andrea Lazzarotto
3
Solía ​​ser Java, pero la necesidad de una JVM para esta tarea simple me molestó, por lo que lo he trasladado a C ++ (las capturas de pantalla todavía muestran el comando java)
Stefan Haustein
44
Mucho mejor que cacaview!
Piotr Dabkowski
1
Esta es una herramienta asombrosa. Definitivamente más lento, pero mucho mejor que la caca. ¿Hay alguna pérdida de calidad al usar el "modo de 256 bits"? (Como tengo que hacerlo, el modo normal está en mal estado)
phil294
2
Muy buenos resultados! Gracias ! ¡Muy útil con ssh cuando no hay ningún servidor x disponible!
Arnaud De Broissia
33

Hice una función de shell de una línea muy rápida y simple que resuelve la pregunta original exactamente como se solicitó en las maquetas. Tenga en cuenta que las capturas de pantalla a continuación son imágenes reales, no maquetas.

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

Captura de pantalla del uso del comando lsix

Los requisitos previos son mínimos: xterm e ImageMagick ( apt-get install xterm imagemagick). Su xterm debe estar en modo vt340, que puede configurar en ~/.Xresourceso desde la línea de comandos ( xterm -ti vt340).

Limitaciones: solo se utilizan 16 colores en todas las imágenes mostradas. Eso significa que una imagen puede verse mejor cuando se ve sola. (Vea abajo).

Captura de pantalla que muestra la limitación de 16 colores

ACTUALIZAR

Si bien mi respuesta anterior sigue siendo correcta, he creado un script de shell aún mejor que es capaz de hacer una 'ls' de imágenes directamente en un terminal. Agregué todo tipo de mejoras para que las imágenes se vean mejor (más colores, alfa adecuado, orientación JPEG, manejo de muchas imágenes, diseño de mosaico compacto, ...). Todavía es un programa bastante pequeño, pero pensé que la gente querría personalizarlo, así que lo puse en github: https://github.com/hackerb9/lsix .

hackerb9
fuente
30

No puede hacerlo en una ventana de terminal, pero puede hacerlo en una consola Linux usando fbi. Necesita un framebuffer para que esto funcione:

sudo apt-get install fbi

Vaya a una consola de Linux (usando Ctrl+ Alt+ F1) e ingresefbi <filename>

Debería mostrar tu imagen.

Amith KK
fuente
55
¿Qué quieres decir con "terminal" vs "tty"? ¿No son lo mismo? askubuntu.com/questions/506510/…
Wernight
66
No funciono para mi. Pero la herramienta "caca" funcionó. usando "DejaVu Sans Mono-16", pixelize = 16.67 archivo = / usr / share / fonts / truetype / dejavu / DejaVuSansMono.ttf ioctl VT_GETSTATE: ioctl inapropiado para el dispositivo (¿no una consola de Linux?)
Felipe
3
@Wernight Ctrl + Alt + F1 / F2 / F3 te da un tty debajo de ubuntu (Ctrl + Alt + F8 para volver).
joelostblom
1
También hay FIM, que es una versión mejorada de fbi. La página de inicio indica que puede mostrar imágenes no solo con el framebuffer, sino también con X. Sin embargo, no se instalará para mí.
joelostblom
1
Buenas noticias, iTerm2 v3 puede mostrar imágenes en línea, ver iterm2.com/images.html
AB
20

Otra alternativa es la terminología:

ingrese la descripción de la imagen aquí https://www.youtube.com/watch?feature=player_embedded&v=ibPziLRGvkg

Puede instalarlo en Ubuntu agregando el repositorio enlightenment-git :

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

O en versiones recientes de Ubuntu> = Vivid (15.04) se puede obtener de los repositorios oficiales.

sudo apt-get install terminology

Para ver una imagen, escriba tycat IMAGENAMEy para ver una lista de imágenes, escriba tyls -m.

Javier López
fuente
55
tycatpara mostrar una imagen en línea y tyls -mpara mostrar miniaturas de tamaño mediano en un directorio.
joelostblom
sudo add-apt-repository ppa: hannes-janetzek / enlightenment-svn doesnt Work
Gucho Ca
He actualizado la respuesta para señalar el ppa de iluminación más reciente
Javier López, el
1
@chilicuil terminologyestá en los repositorios oficiales de Ubuntu , no se necesita PPA.
gato
@cat la respuesta original fue escrita antes de que se lanzara Vivid y en ese momento la terminología no estaba disponible, el ppa de iluminación todavía tiene paquetes precisos / confiables y versiones de terminología más actualizadas. Sin embargo, quizás sea útil editar la respuesta para señalar que las versiones terminológicas congeladas disponibles en las últimas versiones de ubuntu serán útiles.
Javier López
12

En realidad, existe un proyecto llamado TermKit , si desea probarlo, consulte http://blog.easytech.com.ar/2011/05/21/playing-with-termkit-with-chrome/ pero es bastante sin terminar (ya que parece que tienes una Mac, deberías probar la versión para Mac ya que es "la original")

Sin embargo, sí, es una idea que vale la pena explorar: el cambio entre el modo gráfico y el de solo texto debe ser rápido, ya que no siempre necesito ver las imágenes. Además, debe ser totalmente compatible con, por ejemplo, Vim ..

sakjur
fuente
Leí sobre este proyecto una vez antes en Slashdot . Suena intrigante! Lástima que necesites Google Chrome para usarlo ... bueno, está bien, no es tan malo si usas Chrome para empezar, pero parece una dependencia innecesaria.
Christopher Kyle Horton
@ WarriorIng64 Sí, podría funcionar si pirateas un poco con Qt's WebKit, pero afortunadamente tenemos chromium-browserlos repositorios, por lo que es bastante fácil instalar algo Chromelike. Realmente no he probado TermKit en mi computadora (con Chromium instalado, pero utilizando como principal Fx) ya que soy muy dependiente de Vim, y realmente no puedo usar un terminal que no me va a dar mi editor de texto amada;)
sakjur
8

Esto no existe; gnome-terminalsolo es capaz de mostrar texto, al menos hasta donde yo sé.

Sin embargo, puede llamar a un visor de imágenes desde la línea de comandos para ver sus imágenes en una carpeta en particular. Entonces, al salir de su maqueta anterior que muestra que enumera todas las imágenes .jpg en la carpeta actual, puede usar Eye of GNOME (visor de imágenes predeterminado de Ubuntu) desde la línea de comandos para algo similar:

eog *.jpg &

Tenga en cuenta que la ventana que aparece solo mostrará una imagen a la vez, aunque puede usar los botones de flecha proporcionados para alternar entre ellos.

Christopher Kyle Horton
fuente
1
si se ejecuta desde un terminal, eog *.jpg & disownes mejor ya que de lo contrario el EOG probablemente saldrá cuando el terminal se cierre. Nota: desearía que EOG siguiera siendo el visor de imágenes definitivo de Ubuntu: shotwell es bueno, pero intenta indexar mis 30GB + de imágenes ... y es lento y molesto de todos modos
Wilf
Todas las respuestas anteriores prueban que esta publicación es incorrecta.
Arnaud De Broissia
7

Escribí una herramienta para hacer esto. Llamé a la mía Show Image In Terminal ( siit) Se supone que tiene un terminal de 256 colores y soporte UTF8, y está escrito en perl.

Lo dejé caer en mi ~/bin. Se supone que tiene Image :: Magick, Term :: Size, Getopt :: Long y Time: HiRes, que deberían estar disponibles en los repositorios de su distribución o CPAN.

Mi intención era ingresar a mi casa y ver rápidamente las imágenes sin abrir una pantalla sobre X. El script escala al ancho / alto apropiado para el terminal en el que se encuentra. Utilicé caracteres UTF8 para duplicar efectivamente la resolución vertical de su terminal, lo que realmente Ayuda a la claridad. YMMV.

Fotos de muestra aquí

Código fuente aquí

Tom
fuente
1
Es "siit", no "mierda" (en serio ...)
Star OS
Originalmente se llamaba termpeg, pero eso es demasiado difícil de recordar y no completó bien las pestañas. Además, "este código es un pedazo de siit" ni siquiera tiene sentido.
Tom
2
El enlace del código fuente no funciona para mí, pero encontré una versión en Internet, aquí hay un espejo: gist.github.com/certik/4336299de10f400ee49943bd9f8a8ba6
Ondřej Čertík
¿Alguna posibilidad de que pueda proporcionar una versión incluida? Siempre me doy por vencido cuando tengo que instalar bibliotecas.
Sridhar Sarnobat
6

Además de la respuesta de Joel , el administrador de archivos de terminal Ranger con w3mimgdisplayextensión puede mostrar imágenes a todo color y también admite "vistas previas de arte ASCII de la vieja escuela". Aquí es cómo puedes habilitarlo. Esto puede no ser exactamente lo que estaba buscando, sino una forma de obtener una vista previa de las imágenes en la terminal.

ingrese la descripción de la imagen aquí

afedersin
fuente
4

Otra herramienta es catimg , aunque no hay un paquete listo para Ubuntu. En realidad, no ve la imagen, sino que la convierte en caracteres de colores.

ingrese la descripción de la imagen aquí

algun usuario
fuente
3

Aquí hay algunas soluciones en node.js(Instrucciones de instalación aquí ).

  1. Tubo de imagen

  2. imagen

Para instalar cualquiera, escriba npm install -g <package_name>where package_namees cualquiera de picture-tubeo imaging.

Nemo
fuente