Gibt es einen Bildbetrachter, der Bilder auf STDIN aufnimmt?

33

Ich suche einen Bildbetrachter, der Daten aufnimmt stdinund wie folgt ausgeführt werden kann:

cat image.png | imageviewer
SL9
quelle

Antworten:

40

Das displayProgramm von ImageMagick wird genau das tun, vorausgesetzt, Sie leiten etwas ein, das es versteht.

cat image.png | display

und es öffnet sich ein Fenster mit diesem Bild.

Erjiang
quelle
1
Bei der Version muss ImageMagick 6.8.8-1 Q16 i686 2014-01-04ich auch -als Parameter übergeben: $ cat image.png | display -oder $ display - < image.png.
Emil Lundberg
12

ImageMagick's display.

display < foo.png
Ignacio Vazquez-Abrams
quelle
7

Unter Linux (und wahrscheinlich BSDs) fast alle - wenn Sie /dev/stdinals Pfad angeben. Dazu gehören: xloadimage, feh, Eye of GNOME ( eog).

eog /dev/stdin < "$file"

(Nicht alle funktionieren jedoch gut mit speziellen Dateien. GThumb hat den Test beispielsweise nicht bestanden.)

Grawity
quelle
3
Das funktioniert nicht: cat graph.png | eog / dev / stdin
bukzor
5
@Naga: Das < "$file"war ein Beispiel. Es ging darum, ob das Programm einen beliebigen Stream akzeptieren kann, sei es eine einfache Umleitung oder etwas Fortgeschritteneres (wie das Bereitstellen eines Images über stdin, eine Named Pipe, eine Prozessersetzung, einen Socket oder ein Zeichengerät). Das Problem ist, dass viele Zuschauer den fd als suchbar benötigen, was nur normale Dateien und Blockgeräte sind.
Grawity
3
Wie @bukzor hervorhob, cat graph.png | eog /dev/stdinschlägt fehl, eog /dev/stdin < graph.pngfunktioniert aber .
Denilson Sá Maia
2
Gibt es eine Möglichkeit, diese Methode auch für piping ( |) zu verwenden?
Tarrasch
1
Es sieht so aus, eogals würden Informationen über den Dateideskriptor nachgeschlagen (was in dem speziellen Fall gelingt, dass sie direkt von einer Datei umgeleitet wurden), während normale Unix-Programme die Eingabe nur übernehmen, unabhängig davon, woher sie kommt. Also eogwird nicht für allgemeine stdin arbeiten. Ein anderes Programm, das funktioniert, ist gwenview /dev/stdin(der KDE-Bildbetrachter).
Mechanische Schnecke
3

Ein FIFO könnte mit eogmangelnder Rohrleitungsunterstützung arbeiten:

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

AFAIK das sollte funktionieren.

Nathan Ringo
quelle
3

Sie können feh verwenden, es ist ziemlich schnell.

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

feh ist ein kompakter Image-Viewer, der in vielen Linux-Distributionen standardmäßig enthalten ist. Es richtet sich insbesondere an Befehlszeilenbenutzer, die einen schnellen Bildbetrachter ohne große GUI-Abhängigkeiten benötigen.

MaikoID
quelle
2
Können Sie Ihre Antwort etwas erweitern? Nur ein Produkt zu erwähnen (ist das ein Befehl, ein Produkt oder ein Ausdruck der Gleichgültigkeit?), Erklärt nicht wirklich, wie die Lösung erreicht werden kann. Es ist besser zu erklären, wie das Produkt zur Lösung des Problems verwendet wird, oder zumindest zu beschreiben, was das Produkt zu einer guten Lösung macht und nicht nur zu einem zufälligen Google-Treffer. Gute Anleitung zum Empfehlen von Software hier: meta.superuser.com/questions/5329/… . Vielen Dank.
Fixer1234
1
Die Frage ist sehr spezifisch, ich habe eine spezifische Antwort gegeben. Und um Himmels willen gibt es eine Befehlszeile direkt über uns.
MaikoID