¿Hay un visor de imágenes que tome imágenes en STDIN?

Respuestas:

40

El displayprograma de ImageMagick hará exactamente eso, suponiendo que lo canalice algo que entienda.

cat image.png | display

y aparecerá una ventana que muestra esa imagen.

erjiang
fuente
1
En la versión ImageMagick 6.8.8-1 Q16 i686 2014-01-04, también necesito pasar -como parámetro: $ cat image.png | display -o $ display - < image.png.
Emil Lundberg
12

ImageMagick's display.

display < foo.png
Ignacio Vazquez-Abrams
fuente
7

En Linux (y probablemente en BSD), casi todos ellos, si se da /dev/stdincomo camino. Esto incluye: xloadimage, feh, Ojo de GNOME ( eog).

eog /dev/stdin < "$file"

(Sin embargo, no todos funcionan bien con archivos especiales. GThumb falló la prueba, por ejemplo).

Gravedad
fuente
3
Esto no funciona: cat graph.png | eog / dev / stdin
bukzor
55
@Naga: El < "$file"fue un ejemplo. El punto era si el programa puede aceptar una secuencia arbitraria, ya sea una simple redirección o algo más avanzado (como proporcionar una imagen a través de stdin, una tubería con nombre, sustitución de proceso, un socket o un dispositivo de caracteres). El problema es que muchos espectadores requieren que se busque el fd, que solo son archivos normales y dispositivos de bloque.
Grawity
3
Como señaló @bukzor, cat graph.png | eog /dev/stdinfalla, pero eog /dev/stdin < graph.pngfunciona.
Denilson Sá Maia
2
¿Hay alguna manera de hacer que este método funcione también con piping ( |)?
Tarrasch
1
Parece que eogestá buscando información en el descriptor de archivo (que tiene éxito en el caso especial de que se haya redirigido directamente desde un archivo), mientras que los programas normales de Unix simplemente tomarán la entrada independientemente de su origen. Así eogque no funcionará para stdin general. Otro programa que funciona es gwenview /dev/stdin(el visor de imágenes de KDE).
Caracol mecánico
3

Un FIFO podría funcionar con eogla falta de soporte de tuberías:

mkfifo ${tmpfilename};
cat ${file} > ${tmpfilename} &;
eog /dev/stdin < ${tmpfilename};
rm ${tmpfilename};

AFAIK esto debería funcionar.

Nathan Ringo
fuente
3

Puedes usar feh, es bastante rápido.

cat image.png | feh --scale-down -  

feh es un visor de imágenes ligero que se encuentra en los repositorios predeterminados de muchas distribuciones de Linux. Está especialmente dirigido a usuarios de línea de comandos que necesitan un visor de imágenes rápido sin grandes dependencias de GUI.

MaikoID
fuente
2
¿Puedes ampliar tu respuesta un poco? Solo mencionar un producto (¿es un comando, un producto o una expresión de indiferencia?), Realmente no explica cómo lograr la solución. Es mejor explicar cómo usar el producto para resolver el problema, o al menos describir qué hace que el producto sea una buena solución, no solo un éxito aleatorio de Google. Buena guía para recomendar software aquí: meta.superuser.com/questions/5329/… . Gracias.
Fixer1234
1
La pregunta es muy específica, di una respuesta específica. Y por el amor de Dios, hay una línea de comando justo encima de nosotros.
MaikoID