Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Is there any command line (pipe-able) graph viewer for SVG and JPG/PNG image files?

Especially that, the graph/image files are output thru pipe line, rather than plain files, so there must be option to specify the file type/extension.

Though gv works for PS/PDF generated by dot programs, I'd like to know whether there's alternatives for support SVG etc. image files.

share|improve this question
1  
just to clarify: your main point is not to display the .svg, .jpg and .png on the console ("command line"), but rather to pipe such mime-types to a normal graphical program? –  akira Aug 11 '10 at 5:29
    
Yes I'd want to display in X. Just like gv does. But gv doesn't support SVG, etc. –  Xiè Jìléi Aug 11 '10 at 9:11
add comment

6 Answers

up vote 14 down vote accepted

Have you tried the display program that comes with ImageMagick?

share|improve this answer
    
AFAIK, Imagemagick alone can't display SVG files, it needs a tool that converts SVG to bitmap. On Debian, sudo aptitude install librsvg2-bin is necessary if "rsvg-convert" isn't installed yet. The package also contains a viewer rsvg-view-3 that has better zoom than display. –  Mytskine Dec 8 '12 at 17:25
    
@Mytskine: According to the ImageMagick Documentation, it will use its own internal SVG renderer if Inkscape or RSVG aren't available. –  Dennis Williamson Dec 9 '12 at 2:46
add comment

What do you mean with 'pipe-able'?
feh is very good commandline viewer with tons of options.

share|improve this answer
    
I mean it accepts input from stdin, and guess the MIME type if possible. Or by specify the extension explicitly if it can't guess the file type heuristically. –  Xiè Jìléi Aug 11 '10 at 9:16
    
feh does not seem to support SVG at all; I get "feh WARNING: pySVGLogo.svg - No Imlib2 loader for that file format"... Cheers! –  sdaau Dec 24 '10 at 10:56
1  
Few more notes: first, feh homepage, examples and screenshots; second (ubuntu 10.04.3): starts up very fast; has Debian/Ubuntu package; has a bit weird mouse interaction (see feh --help at end); I can load a directory of pngs, and keep or (arrow keys) pressed, it loads so fast it looks like (or better than) an animated .gif :) ... Cheers! –  sdaau May 20 '12 at 9:14
add comment

I second Dennis Williamson's recommendation of ImageMagick display.

Also, you can sometimes use named pipes to pipe data to programs which read from a file.

Example:

mkfifo /tmp/foo.svg
cat /usr/share/inkscape/clipart/tux.svg > /tmp/foo.svg & inkscape /tmp/foo.svg
rm -f /tmp/foo.svg

Won't work with programs which expect to be able to seek backward in the file, though.

share|improve this answer
    
This usage of named pipe is very creative, thanks. After a try, I found it took a while to startup, it's a full functional editor rather than a simple viewer. –  Xiè Jìléi Aug 11 '10 at 9:25
add comment

I usually work with SVG as text files, so would like the viewer to automatically refresh the display as soon as the file got saved (and its contents got changed) - this should be applicable to 'pipable' situations, I think (i.e. with named pipes).

Note that, for default Gnome apps:

  • evince currently works like this for PDFs, but seemingly it cannot read SVG (for me it generates "Unable to open document - Error opening file: Permission denied" when I tried to load SVG files)
  • eog (Eye Of Gnome) - the latest versions - can also detect if a file changed on this, and then offer a 'Reload' button; but apparently, you'd still have to click on 'Reload' each time (I cannot see a way to cause automatic reload always on file change in eog, like evince behaves with PDFs) - and also, at least on my Ubuntu 10.04, eog SVG support is somewhat broken (zoom in results with blurry lines)
  • ImageMagick's display not only does not automatically refresh when the file changes on disk - and even when you press 'refresh' in display, you still do not get the latest version of the file (meaning, you have to restart display to show the latest version :( ).

Here are some more notes I found so far:

  • Squiggle, the SVG Browser The SVG browser that is part of the Batik toolkit. - Download Batik batik-1.7.zip; unpack it; run java -jar batik-squiggle.jar and there it is; does not refresh the image automatically if the svg file changed on disk
  • SVG Image Viewer? - Ubuntu Forums recommendations:
    • In post #8 - "I wrote a little python script ... You just run it as: svg_compare.py and it opens up an svg and displays it using an svg library and using gtk's raster library. You can zoom with the mouse..."
    • xsvg (from http://cairographics.org) - I installed libsvg1_0.1.4-1_i386.deb, libsvg-cairo1_0.1.6-5_i386.deb and xsvg_0.2.1-3_i386.deb in that order; those versions are from 2005, and so xsvg is extremely simple - no zoom, nothing.. And needless to say, it does not react to saved file changes automatically...
  • through that, I found rsvg-view, which I think is a part of sudo apt-get install librsvg2-bin. Its small, nice, supports stdin - however, also rsvg-view cannot detect a file change, and automatically refresh on it..

Yup - well, I hope this helps...
Cheers!

 

EDIT (Dec 24 '10): well, here is also my contribution: svg_refreshview.py - which is basically a rework of svg_compare.py mentioned above, that simply shows an SVG file, and reloads the file and refreshes the display if the file has been modified. (it can't really work with stdin - but there are other scripts in my repo that parse stdin in python, maybe they'll help).

EDIT2 (May 20 '12): Also, came up with a Perl-Tk script example, which is very crude (no mouse interaction, no nothing), but uses ImageMagick Perl API, and so can render SVG (as bitmap on a canvas), please see answer #10670039 - ImageMagick API for command-line GUI application interface to display - Stack Overflow.

share|improve this answer
    
It's so occasionally, I have patched the Reload stuff of eog JUST YESTERDAY! I hate that button, too! –  Xiè Jìléi Dec 24 '10 at 14:02
    
And, tell you another truth, the display comes from ImageMagick doesn't scale SVG well, because it rasterized the graph before display it. And even worse, display and rsvg doesn't work with some of my SVG files. Till now, only FireFox renders correctly. FireFox beats all. –  Xiè Jìléi Dec 24 '10 at 14:11
    
Hi @谢继雷, thanks for the comments! Well - I have just edited my post and added a link to a python script I just put together - try it out, maybe it helps... Cheers! Also +1 on the "hate that button" :) [although, I must admit: I'd always rather have a button to do something manually - than not to have it :) ... I'd just like auto-refresh extra :) ] –  sdaau Dec 24 '10 at 14:17
add comment

It seems Geeqie viewer handles svg graphics and it automatically loads the updated images. I don't know whether it can take images from stdin. I hope it helps.

share|improve this answer
add comment

Inkscape already comes with its own viewer: inkview

It lacks features, it might be a bit slow, but it works (and probably renders SVG more accurately than ImageMagick's display).

share|improve this answer
    
Just wanted to note that I tried inkview (I believe from 0.48 inkscape) on Ubuntu 10.04.3, started up amazingly fast! (EDIT: but only for small .svgs; try inkview /usr/share/inkscape/examples/*.svg* as the man page says, there are some heavies there too... Still, GUI startup is fast.) Thanks for that note, @DenilsonSá - cheers! –  sdaau May 20 '12 at 10:33
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.