I'm looking for an image viewer that takes data on stdin
and can be run like:
cat image.png | imageviewer
ImageMagick's display
program will do just that, assuming you pipe it something that it understands.
cat image.png | display
and it'll pop up a window showing that image.
ImageMagick 6.8.8-1 Q16 i686 2014-01-04
I need to also pass -
as a parameter: $ cat image.png | display -
or $ display - < image.png
.
Commented
Jan 27, 2014 at 19:52
You can use feh, it's pretty fast.
cat image.png | feh --scale-down -
feh is a lightweight image viewer which is in the default repositories of many Linux distributions. It is especially aimed at command line users who need a fast image viewer without huge GUI dependencies.
On Linux (and likely BSDs), almost all of them – if you give /dev/stdin
as the path. This includes: xloadimage
, feh
, Eye of GNOME (eog
).
eog /dev/stdin < "$file"
(Not all of them work well with special files, though. GThumb failed the test, for example.)
< "$file"
was an example. The point was whether the program can accept an arbitrary stream, be it a simple redirection or something more advanced (such as providing an image via stdin, a named pipe, process substitution, a socket, or a character device). The problem is that many viewers require the fd to be seekable, which only regular files and block devices are.
Commented
Jun 20, 2011 at 18:56
cat graph.png | eog /dev/stdin
fails, but eog /dev/stdin < graph.png
works.
Commented
Jan 3, 2012 at 17:18
|
) as well?
eog
is looking up information on the file descriptor (which succeeds in the special case that it was redirected directly from a file), whereas normal Unix programs will just take the input regardless of where it comes from. So eog
won't work for general stdin. Another program that works is gwenview /dev/stdin
(the KDE image viewer).
Commented
Mar 4, 2014 at 4:13
A FIFO could work with eog
's lack of piping support:
mkfifo ${tmpfilename};
cat ${file} > ${tmpfilename} &;
eog /dev/stdin < ${tmpfilename};
rm ${tmpfilename};
AFAIK this should work.
With imv, e.g. on Debian bullseye:
sudo apt install imv
# it provides commands imv-x11 and imv-wayland
# e.g. with imv-x11, pipe to imv-x11, and make sure to end the command with a dash: e.g.
systemd-analyze plot | imv-x11 -
# "systemd-analyze plot" returns on stdout an SVG image of the systemd services/units startup timeline